JavaScript的历史
liveScript -> JavaScript -> JScript -> ECMAScript
javascript是一种运行在浏览器的 弱类型、多范式、动态脚本语言
- 静态语言(java/c/C++)先编译后执行
JavaScript包含什么?
- ECMA js的语法规则部分 if while
- DOM 文档对象模型 DOM定义对应的接口,浏览器做具体实现
- BOM 浏览器对象模型 BOM定义对应的接口,浏览器做具体实现 最高是window.location.href
JavaScript的运行环境是什么?
- 浏览器(js解析引擎chrome:V8)
- nodejs平台运行
浏览器中的JavaScript可以做什么?
- 操作DOM
- 操作BOM
- 表单验证
- 发送ajax请求
- 页面特效
浏览器中的JavaScript不可以做什么?
- 操作文件
- 操作数据库
- 接收请求
- 操作系统底层
JavaScript与ECMAScript的关系
JavaScript 就是 ECMAScript 的一种实现。
一种弱类型的多范式的脚本语言。
chrome浏览器解析过程
- html/css : webkit布局引擎,完成布局和渲染
- JavaScript : V8解析引擎,解析js代码并执行
- 中间层: 负责调配上下层以及硬件层: 网卡/硬盘
数据类型
- 基本数据类型
- 数字
- 字符串
- bool
- 复合数据类型
- 对象
- 单体对象(Math)
- 内置对象(Array)
- 自定义对象
- 对象
- 空类型
- null
- undefined
语 句
- 条件语句
- 循环语句
- 分支语句
- return语句
- continue
- break
== 与 ===
前者比较内容、有隐式转换
后者比较内容和类型
装箱 与 拆箱
装箱:将基本数据类型包装成其对应的复合数据类型
拆箱:将复合数据类型转换成其对应的基本数据类型
sort方法参数fn
- 如果fn的返回值,大于0,就交换a和b的位置
- 大于0就不交换
- 等于0就保持其相对位置
类型转换
- 数字->字符串:
toString
String
''
new String()
- 字符串->数字:
Number
parseInt(parseFloat)
new Number()
*1( /1 )
- 性能上:
*1 ( /1 )
>Number
>parseInt ( parseFloat)
>new Number()
- 性能上:
- 数字 与 bool
- 0 -> false
- 非0 -> true
- bool值 -> 数字
- false -> 0
- true -> 1
- 字符串 与 bool
- ‘’ -> false
- 非空字符串 -> true
- false -> ‘false’
- true -> ‘true’
- 其他类型 转换 bool
- 空类型 -> false
- 对象 -> true
调试器的介绍
string对象常用方法
1> 截取字符串 : substring substr slice 2> 分割字符串 : split 返回数组 3> 替换 : replace 返回一个新的字符串 4> 检索字符串 : indexOf search 5> 拼接 : concat 返回一个新的字符串 6> 大小写转换 : toLowerCase toUpperCase 7> 匹配 : match
数组对象的常用方法
1> push 2> pop 3> unshift 4> shift 5> concat 6> splice 7> slice 8> join 9> sort 10> reverse 11> indexOf 12> map 13> forEach
栈结构 与 队列结构
栈结构: 先进后出 队列 : 先进先出
Math对象
Math.PI === 3.1415926 1> sin( angle ) 参数为 弧度 2> cos( angle ) 3> floor 3> ceil 4> random 5> abs 6> sqrt 7> power( x, y )
对象相关概念
- 概念:
- 无序的键值对集合 {name: ‘tom’, age: 18} 一个具体事物的抽象
- 创建方式
- a: 直面量
- b: 构造函数
- c: 工厂模式: 比作一个小汽车的生成工厂,只需要将制造小汽车的材料送达工厂,那么工厂就输入一辆小汽车。
好处:new 或 不 new 都能正确地返回 用户想要的对象。
值类型 与 引用类型
- 存储逻辑: 值类型 -> 栈;引用类型 -> 堆
- 参数传递:
- 值类型;拷贝值
- 引用: 拷贝指针
DOM操作属性与方法
属性
- parentNode: 获取父节点
- firstChild : 获取第一个子节点
- nextSibling : 获取下一个兄弟节点
- previousSibling
- innerHTML: a 获取当前节点下的所有内容,返回类型为 字符串;b 设置当前节点的内容
- childNodes:获取当前节点的所有子节点
方法: 都要通过parentNode去调用
<parentNode>
.appendChild( node );<parentNode>
.insertBefore( newNode, node )<parentNode>
.removeChild( node );<parentNode>
.replaceChild( newNode, node );<node>
.cloneNode( true | false );