1.作用域与作用域链
理解
就是一块“地盘”,一个代码段所在的区域
它是静态的(相对于上下文对象,上下文是动态产生的,函数执行前),在编写代码时就确定了。
但是你调用两个fn(),作用域就一个,在你写代码时就确定了
分类
全局作用域
函数作用域
没有块作用域(ES6有了)if(true){ var a = 3}
作用
隔离变量,不同作用于下变量不会有冲突
产生多少作用域:N+1
<script type="text/javascript"> /* //没块作用域 if(true) { var c = 3 } console.log(c)*/ var a = 10, b = 20 function fn(x) { var a = 100, c = 300; console.log('fn()', a, b, c, x) function bar(x) { var a = 1000, d = 400 console.log('bar()', a, b, c, d, x) } bar(100) bar(200) } fn(10) </script>