作用域:简单的来说;就是表变量的使用范围
// 注意: 定义函数可以不写let, 默认就是全局变量
//函数每次执行的时候都会开辟新的内存空间,当函数执行完毕之后,就会关闭这块空间,并且里面的变量也会销毁,释放内存
局部作用域:
函数作用域:
1.在函数内部声明的变量,在函数外部无法访问
2.函数的参数也是函数内部的局部变量
3.不同函数内部声明的变量无法相互访问
4.函数执行完毕后,函数内部的变量实际被清空了
块级作用域:
在js中使用{ }包裹的代码称为代码块,代码块内部声明的变量,外部【有可能】无法被访问
js除了变量还有常量,常量与变量本质的区别【常量必须有值并且不允许被重新赋值】,常量值为对象时属性和方法允许重新赋值。
总结:
let声明的变量会产生块级作用域,var不会产生块级作用域
const声明的常量也会产生块级作用域
不同代码之间的变量无法相互访问
推荐使用let和const
注意:开发中let和const经常不加区分的使用,如果担心某个值会不小心被修改,则使用const声明为常量
全局作用域:
为window对象动态添加的属性默认是全局的,不推荐
函数中未使用任何关键字声明的变量是全局变量,不推荐
尽可能少的声明全局变量,防止全局变量污染
js中的作用域是程序被执行的底层机制,了解这一机制有助于规范代码书写习惯,避免作用域导致的语法错误
作用域链:
就是由作用域串联起来的链式结构