
基本概念
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>