1.作用域
学习目标:了解作用域对程序执行的影响以及作用域链的查找机制,使用闭包函数创建隔离作用域避免全局变量污染
作用域规定了变量能够被访问的范围,离开了这个范围变量便不能被访问
作用域分为:
局部作用域
函数作用域 :在函数内部声明的变量只能在函数内部被访问。外部无法直接访问
总结:函数内部声明的变量。在函数外部无法访问
函数的参数也是函数内部的局部变量
不同函数内部声明的变量无法相互访问
函数执行完毕后,函数内部的变量实际被清空了
块作用域:在JS中 被 {}包围的,代码块内部声明的变量外部将有可能无法被访问
总结:for 、if 有块作用域
let 声明的产生块作用域 var不会产生块作用域
不同代码块之间无法相互访问
全局作用域
script 标签和js文件的最外层就是全局作用域
window对象动态添加的属性默认也是全局的
函数中未使用任何关键词声明的变量为全局变量
2.作用域链
作用域链的本质是底层的变量查找机制
在函数执行时,会优先找到当前函数作用域中查找变量
如果当前作用域查不到会依次查看父级作用域直到全局作用域
总结:嵌套关系的作用域串联起来形成了作用域链
子作用域链能够访问父作用域,父级作用域链无法访问子作用域链的变量、