- 定義這份javascript的程式碼要用嚴格模式執行
- ECMA Script 5 的directive
- IE9以後皆支援,IE9以前皆忽略
- 只是一串字串,並不是語法,所以舊版本的瀏覽器不會出錯
- 可以幫助我們寫出更乾淨的程式碼
- 必須宣告在script的最前面
- 全域影響整份script
使用嚴格模式的好處
- 幫助我們寫出更安全的程式碼
- 將以前接受的錯誤語法更改為實際錯誤
在嚴格模式中不被允許的寫法
- 使用沒有宣告的變數
x = 31;
user = {name: 'Shawn', age: 18}; // object也是變數,必須宣告
- 刪除變數
var pi = 3.14;
delete pi;
function myFunction(a, b){ }
delete myFunction;
- 參數名稱重複
function(a, a){ }
- 不允許8進位數字文字
var x = 010;
- 不允許8進位轉義字符
var x = "\010";
- 不允許唯讀的屬性被寫入
var constantCollection = {};
Object.defineProperty(constantCollection, "pi", { value: 3.14, writable: false });
constantCollection.pi = 3.14159;
- 不允許 get only 的屬性被寫入
var obj = {
get x() {
return 0
}
};
obj.x = 3.14;
- eval 不可用來當變數
var eval = 0;
- arguments 不可用來當變數
var arguments = 0;
- 禁止使用with語法
with (Math) { x = sin(2) };
沒有留言:
張貼留言