“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`;
看懂了麼,就是這麼簡單