關於Javascript中的”use strict”的那些事

小杺發表於2019-02-16

“use strict”作用範圍

// file.js
"use strict"
function doStuff(){
    // use strict is enabled here!
}

這樣file.js都會應用上”use strict”模式。
如果你僅想在一個函式中使用:

// file.js
function a(){

"use strict";
// use strict is enabled in this context
function nestedFunction(){
    // and here too
}

}

“use strict”的特性

檢查物件中的重複鍵

var zombie = {
    eyeLeft : 0,
    eyeRight: 1,
    // ... a lot of keys ...
    eyeLeft : 1
}

這段程式碼會丟擲一個錯誤因為 eyeLeft 出現了兩次。這比你用眼睛去找錯誤要快多了。

未宣告變數

在”use strict”模式下,給未宣告的變數賦值會丟擲ReferenceError的警告。而在正常模式下,給未宣告變數賦值會直接建立同名全域性變數。

重複的引數

function run(fromWhom, fromWhom){}

注意fromWho出現了兩次,因此會丟擲一個錯誤。

限制函式中的arguments

var run = function(fromWhom){
    arguments[0] = `alien`;
    alert(fromWhom);
}
run(`zombie`);
// alert: `alien`;

var run = function(fromWhom){
    "use strict";
    arguments[0] = `alien`;
    alert(fromWhom);
}
run(`zombie`);
// alert: `zombie`;

看懂了麼,就是這麼簡單

相關文章