1. 程式人生 > >我才學習到的嚴格模式(越往後看,越感覺複雜啊)

我才學習到的嚴格模式(越往後看,越感覺複雜啊)

嚴格模式   只需要在程式碼首部加入字串“use strict”, 必須在首部,首部是指其前面沒有任何有效的js程式碼註釋,否則無效。

eg:

"use strict";

function(){

console.log(a) ;

}

注意事項:

1.不適用var宣告變數,嚴格模式中獎通不過;在迴圈中如果沒有宣告變數,在非嚴格模式中,i會不小心溢位成為全域性變數,在嚴格模式中會報錯。

2.不推薦在整個指令碼中使用嚴格模式

3.嚴格模式中不允許使用with

4.嚴格模式下,arguments變為引數的靜態副本。非嚴格模式下,arguments物件裡的元素和對應的引數是指向同一個值的引用

!function(a) {
arguments[0] = 100;
console.log(a); //100
}(1);

!function(a) {
'use strict';
arguments[0] = 100;
console.log(a); //1
}(1);

但是:傳的引數是物件除外。arguments和形參共享傳遞。

!function(a) {
'use strict';
console.log(a.x); //1
arguments[0].x = 100;
console.log(a.x); //100
}({x: 1});
5.嚴格模式不允許八進位制整數直接量

....