基本概念
1、只要是函数就可以创造作用域
2、函数中又可以再创建函数
3、函数内部的作用域可以访问函数外部的作用域
4、如果有多个函数嵌套,那么就会构成一个链式访问结构,这就是作用域链
<script> ???//f1--->全局 ???function f1() { ???????//f2--->f1--->全局 ???????function f2() { ???????????//f3---->f2--->f1--->全局 ???????????function f3() { ???????????} ???????????//f4--->f2--->f1---->全局 ???????????function f4() { ???????????} ???????} ???????//f5--->f1---->全局 ???????function f5() { ???????} ???}</script>
变量的搜索原则
1、首先在所在的作用域中查找
2、如果找到了 就直接使用
3、如果没有找到 就去上级作用域中查找
4、如果直到0级作用域链也就是全局作用域还没有找到,报错
在new Function中,在没有指定参数的情况下,函数中的Function对象作用域指示的又是全局
<script> ???var x= 123; ???function f(){ ???????var x = 100; ???????//g.[[scope]] ?== window ???????var g = new Function("","alert(x)"); ???????g(); ???} ???f();//结果为:123</script>
JS高级——作用域链
原文地址:https://www.cnblogs.com/wuqiuxue/p/8341406.html