作用域:局部作用域,全局作用域
局部作用域
局部作用域:函数作用域,块级作用域
函数作用域
函数内部声明的变量只能在函数内部使用,外部无法直接访问。
函数执行完毕后,函数内部的变量被清空。
块级作用域
使用 { } 包裹的代码称为代码块。
代码块内部声明的变量外部有可能无法访问;
let声明的变量会产生块作用域,var不会产生块作用域。
全局作用域
<script>标签 和 .js文件的最外层 就是全局作用域。
在全局声明的变量,任何其他作用域都可以访问。
尽可能少声明全局变量,防止全局变量被污染。
作用域链
嵌套的作用域串联起来形成作用域链。
作用域链-底层的变量查找机制。
当函数被执行时,先在当前作用域中查找变量;如果当前作用域找不到,(则会逐级查找父级作用域直到全局作用域) 向上一层作用域查找,直到全局作用域,找不到报错。