国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

作用域鏈&&嚴格模式

CloudDeveloper / 811人閱讀

摘要:作用域鏈迷惑性代碼不假思索的想到出書的一定是啊,然而結結實實被打臉,輸出原因在編譯時,全局作用域中會存有的對象作用域中存的無在運行時,我這里需要變量啊,但是在的作用域中并不存在,那么就需要去全局作用域中尋找報告老大找到了,輸出全局作用域中的

作用域鏈

迷惑性代碼

var a = 100;
function test(){
    console.log(a);
}
function testFun(){
    var a = 200;
    test();
}

不假思索的想到 出書的一定是 200啊 ,然而結結實實被打臉,輸出 100

原因

在編譯時,

全局作用域中會存有的對象

a

test

testFun

testFun作用域中存的

a

test

在運行時,

test() 我這里需要變量a 啊,但是在test的作用域中并不存在,那么就需要去全局作用域中尋找 a,報告老大找到了,輸出全局作用域中的a,輸出100

迷惑性代碼

var a = 100;
function testFun2(){
    var a = 300;
    function test(){
        console.log(a)
    }
    test();
}
testFun2();

輸出什么? 300!

?!為什么呢

作用域鏈再走一波

1.全局作用域

a

testFun2

testFun2

a

test

test

運行時test時,報告老大,我需要變量a ,test作用域:我沒有啊,你去看看testFun2有沒有;
testFun2作用域:我有 給你拿去好了;
輸出 300

嚴格模式

實例

"use strict";
x = 3.14; //  報錯(x 未定義)
"use strict"
myFunction();
function myFunction(){
    y = 3.14;  //  報錯 (y 未定義)
}
// 不允許刪除變量或對象
"use strict";
var x = 3.14;
delete x ;
// 不允許刪除函數
"use strict";
function x(p1,p2){};
delete x ;
//  報錯
// 不允許變量重名
"use strict";
function x(p1,p1){} //  報錯 
// 不允許使用八進制

"use strict";
var x = 010;   // 報錯
// 不允許使用轉義字符
"use strict";
var x=