分享至javascript語言精髓與編程實踐
開啟嚴格模式(”use strict"):
在全局代碼的開始處加入
在eval代碼的開始處加入
在函數聲明代碼處加入
在new Function() 所傳入的body參數塊開始處加入
1:在對象中聲明相同的屬性名
例如: var obj ={
'name': 1,
'name': 2
};
會拋出SyntaxError: Duplicate data property in object literal not allowed in strict mode.
2:在函數聲明中相同的參數名
例如: "use strict";
function fix(a,b,a) {
return a+b;
}
會拋出 SyntaxError: Strict mode function may not have duplicate parameter names .
3:不能用前導0聲明8進制直接量
例如: var a = 012;
會拋出 SyntaxError: Octal literals are not allowed in strict mode.
4: 不能重新聲明、刪除或重寫eval和arguments這兩個標示符
var eval = ......;
會拋出 SyntaxError: Assignment to eval or arguments is not allowed in strict mode
5:用delete刪除顯示聲明的標識符、名稱和具名函數
function temp() {
'use strict';
var test = 1;
delete test;
}
會拋出 SyntaxError: Delete of an unqualified identifier in strict mode.
6.代碼中使用擴展的保留字,例如 interface,let,yield,package,private等
會拋出SyntaxError: Unexpected strict mode reserved word
7.嚴格模式下是禁止使用with的
會拋出 SyntaxError: Strict mode code may not include a with statement
好了以上都是摘自書上,其實我並不使用嚴格模式的,但是這些知識還是要儲備一些。
