"use?strict"是JavaScript中一個非常好的特性,而且非常容易使用。
作用
- 消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為;
- 消除代碼運行的一些不安全之處,保證代碼運行的安全;
- 提高編譯器效率,增加運行速度;
- 為未來新版本的Javascript做好鋪墊。
使用方法
//?file.js
"use?strict"
function test(){}
這樣的file.js都會應用上"use?strict"模式。
如果你僅想在一個函數中使用,如下代碼僅僅在test中起作用
//?file.js
function test(){
????"use?strict";
? ? function?temp(){}
}
嚴格模式的作用
1、檢查對象中的重復鍵
es6支持重復鍵
let value =?{
????a?:?0,
????b:?1,
????a?:?1
}
這段代碼會拋出一個錯誤因為?a?出現(xiàn)了兩次。這比你用眼睛去找錯誤要快多了。
2、未聲明變量
plane?=?5;
3、重復的參數
function?test(data,?data){
}
注意data出現(xiàn)了兩次,因此會拋出一個錯誤。
4、限制函數中的arguments
function test(data){
????arguments[0]?=?'aaa';
????console.log(data);
}
run('bbb');? ? ?//'aaa';
現(xiàn)在你可以使用"use?strict"
?function test(data){
? ? "use?strict";
????arguments[0]?=?'aaa';
????console.log(data, arguments);
}
run('bbb');? ?//bbb??{ '0': 'aaa' }
arguments[0]?=?'aaa'?改變了參數data,在嚴格模式下,這種操作無效,只對arguments起作用
5、不能用前導0聲明8進制直接量
例如: let a = 012;