深圳网站建设制作报价,域名关联网站,网络系统设计,学平面设计网站目录 作用域局部作用域函数作用域块作用域 全局作用域作用域链 作用域 了解作用域对程序执行的影响及作用域链的查找机制#xff0c;使用闭包函数创建隔离作用域避免全局变量污染。 作用域#xff08;scope#xff09;规定了变量能够被访问的“范围”#xff0c;离开了这个… 目录 作用域局部作用域函数作用域块作用域 全局作用域作用域链 作用域 了解作用域对程序执行的影响及作用域链的查找机制使用闭包函数创建隔离作用域避免全局变量污染。 作用域scope规定了变量能够被访问的“范围”离开了这个“范围”变量便不能被访问作用域分为全局作用域和局部作用域。
局部作用域
局部作用域分为函数作用域和块作用域。
函数作用域
在函数内部声明的变量只能在函数内部被访问外部无法直接访问。
script// 声明 counter 函数function counter(x, y) {// 函数内部声明的变量const s x yconsole.log(s) // 18}// 设用 counter 函数counter(10, 8)// 访问变量 sconsole.log(s)// 报错
/script总结 1. 函数内部声明的变量在函数外部无法被访问 2. 函数的参数也是函数内部的局部变量 3. 不同函数内部声明的变量无法互相访问 4. 函数执行完毕后函数内部的变量实际被清空了
块作用域
在 JavaScript 中使用 {} 包裹的代码称为代码块代码块内部声明的变量外部将有可能无法被访问。
总结 let 声明的变量会产生块作用域var 不会产生块作用域const 声明的常量也会产生块作用域不同代码块之间的变量无法互相访问推荐使用 let 或 const
注开发中 let 和 const 经常不加区分的使用如果担心某个值会不小被修改时则只能使用 const 声明成常量。
全局作用域
script 标签和 .js 文件的最外层就是所谓的全局作用域在此声明的变量在函数内部也可以被访问。
作用域链 父子关系的作用域关联在一起形成了链状的结构作用域链的名字也由此而来。 作用域链本质上是底层的变量查找机制在函数被执行时会优先在当前函数作用域中查找变量如果当前作用域查找不到则会依次逐级查找父级作用域直到全局作用域。 总结 嵌套关系的作用域串联起来形成了作用域链相同作用域链中按着从小到大的规则查找变量子作用域能够访问父作用域父级作用域无法访问子级作用域