JS高级——作用域链

时间:2023-03-10 03:56:30
JS高级——作用域链

基本概念

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>