javascript嚴(yán)格模式下有哪些不同

ECMAScript 5引入了嚴(yán)格模式(strict mode),嚴(yán)格模式即在嚴(yán)格的條件下進(jìn)行,其中的一些不確定的行為得到處理。

嚴(yán)格模式

通過在腳本或函數(shù)的頭部添加"use strict";表達(dá)式來聲明。
支持嚴(yán)格模式的瀏覽器有ie 10+,Firefox 4+,chrome 13+,safari 5.1+,opera 12+。

使用嚴(yán)格模式的好處:

  • 消除語法的不合理,不嚴(yán)謹(jǐn)之處,保證代碼的運(yùn)行安全
  • 提高編譯器效率,增加運(yùn)行速度
  • 為未來新版本的js做鋪墊

嚴(yán)格模式的限制

  1. 不允許使用未聲明的變量
    對(duì)象也是一個(gè)變量。
"use strict"
x = {s1:100, s2:99}; //Uncaught ReferenceError: x is not defined
  1. 不允許對(duì)變量或函數(shù)使用delete操作符
"use strict"
var x = 1;
delete x; //Uncaught SyntaxError: Delete of an unqualified identifier in strict mode.
  1. 不允許變量重名
"use strict"
function fs(r1,r1) {
} //Uncaught SyntaxError: Duplicate parameter name not allowed in this context
  1. 不允許使用八進(jìn)制
"use strict"
var x = 012; //Uncaught SyntaxError: Octal literals are not allowed in strict mode.
  1. 拋棄with語句
"use strict"
var str = "hello";
with(str) {
  console.log(toUpperCase());
}
//Uncaught SyntaxError: Strict mode code may not include a with statement
  1. 不可對(duì)只讀對(duì)象賦值,不可對(duì)不可配置對(duì)象使用delete操作符
"use strict"
console.log(Object.prototype);
delete Object.prototype; //Uncaught TypeError
console.log(Object.prototype); 
  1. 禁止this關(guān)鍵字指向全局對(duì)象
"use strict"
function fs() {
  console.log(this);
}
fs();
//undefined
  1. 不可在if內(nèi)部聲明函數(shù)
"use strict"
var a=0;
if(a<=2) {
  function add() {
    a++;
    return a;
  }
}
add(); //Uncaught ReferenceError: add is not defined
console.log(add()); //非嚴(yán)格模式下返回2
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容