01作用域与作用域链

1.作用域

学习目标:了解作用域对程序执行的影响以及作用域链的查找机制,使用闭包函数创建隔离作用域避免全局变量污染

作用域规定了变量能够被访问的范围,离开了这个范围变量便不能被访问

作用域分为:

局部作用域

函数作用域 :在函数内部声明的变量只能在函数内部被访问。外部无法直接访问

总结:函数内部声明的变量。在函数外部无法访问

函数的参数也是函数内部的局部变量

不同函数内部声明的变量无法相互访问

函数执行完毕后,函数内部的变量实际被清空了

块作用域:在JS中 被 {}包围的,代码块内部声明的变量外部将有可能无法被访问

总结:for 、if 有块作用域

let 声明的产生块作用域 var不会产生块作用域

不同代码块之间无法相互访问

全局作用域

script 标签和js文件的最外层就是全局作用域

window对象动态添加的属性默认也是全局的

函数中未使用任何关键词声明的变量为全局变量

2.作用域链

作用域链的本质是底层的变量查找机制

在函数执行时,会优先找到当前函数作用域中查找变量

如果当前作用域查不到会依次查看父级作用域直到全局作用域

总结:嵌套关系的作用域串联起来形成了作用域链

子作用域链能够访问父作用域,父级作用域链无法访问子作用域链的变量、