1. 程式人生 > >JS高級——作用域鏈

JS高級——作用域鏈

基本 post 函數 bsp func scope 多個 gpo var

基本概念

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高級——作用域鏈