<script> function fn1(){ var i="a"; function fn2(){ i="b"; function fn3(){ i="c"; } fn3(); } fn2(); console.log(i); } fn1(); </script>
结果:cspa
解析以下:牢记做用做用域链四条原则code
一、 当对一个变量产生引用时,要遵循做用域链原则。尝试引用一个变量,先在当前做用域寻找该变量的声明语句(var 变量名)。有,直接使用该变量。blog
二、 若是没有,继续向上一级做用域寻找var声明语句。有,直接使用ip
三、 若是仍是没有,继续向上一级做用域寻找var声明语句。有,直接使用作用域
四、周而复始,直到查询到全局做用域,依然没有var声明语句,系统会隐式(自动)地建立该变量的声明语句io