4.1原始值与引用值
4.1.1动态添加属性
4.1.2复制值
4.1.3传递参数
4.1.4确定类型
4.2执行上下文与作用域
变量和函数 在任何语言中都有这个问题,起作用的时间段(生命周期)和空间域。
JavaScript通过作用域链的方式来实现空间的管理。通过预解析—创建执行上下文—垃圾回收的方式实现时间的管理。
JavaScript 作用域
JavaScript 局部作用域
变量在函数内声明,变量为局部作用域。
局部变量:只能在函数内部访问。
JavaScript 全局变量
变量在函数外定义,即为全局变量。
全局变量有 全局作用域: 网页中所有脚本和函数均可使用。
注意的是JS没有块级作用域:块语句(大括号“{}”中间的语句),如 if 和 switch 条件语句或 for 和 while 循环语句,不像函数,它们不会创建一个新的作用域。
作用域链:
实现作用域管理的具体方法。
JavaScript 变量生命周期
JavaScript 变量生命周期在它声明时初始化。
局部变量在函数执行完毕后销毁。
全局变量在页面关闭后销毁。
- 预编译(发生在函数执行的前一刻)
四部曲:
1.创建AO对象
2.找形参和变量声明,将变量和形参作为AO属性名,值为undefined
3.将实参和形参统一
4.在函数体里面找函数声明,值赋予函数体
- 垃圾回收(前面讲过)