首頁  >  文章  >  web前端  >  javascript中"use strict"嚴格模式詳解

javascript中"use strict"嚴格模式詳解

小云云
小云云原創
2018-03-14 18:06:071333瀏覽


除了正常運作模式,ECMAscript 5增加了第二種運作模式:「嚴格模式」(strict mode)。顧名思義,這種模式使得Javascript在更嚴格的條件下運作。

為什麼用嚴格模式

  • 消除Javascript語法的一些不合理、不嚴謹之處,減少一些怪異行為;

  • 消除程式碼運行的一些不安全之處,保證程式碼運行的安全性;

  • 提高編譯器效率,增加運行速度;

#為未來新版的Javascript做好鋪墊。

「嚴格模式」體現了Javascript更合理、更安全、更嚴謹的發展方向,包括IE 10在內的主流瀏覽器,都已經支援它,許多大專案已經開始全面擁抱它。

另一方面,同樣的程式碼,在”嚴格模式”中,可能會有不一樣的運行結果;一些在”正常模式”下可以運行的語句,在”嚴格模式下將不能運行。掌握這些內容,有助於更細緻、深入理解Javascript,讓你變成更好的程式設計師。

進入標誌

"use strict";

如何呼叫

針對單一腳本

 <script>    &quot;use strict&quot;;
    console.log("这是严格模式。");
  </script>

針對單一函數

function strict(){    "use strict";
    return "这是严格模式。";
  }
  function notStrict() {    return "这是正常模式。";
  }

語法與行為改變

嚴格模式對Javascript的語法和行為,都做了一些改變。 全域變數明確宣告

在正常模式中,如果一個變數沒有宣告就賦值,預設​​是全域變數。嚴格模式禁止這種用法,全域變數必須明確宣告。

"use strict";
  v = 1; // 报错,v未声明  for(i = 0; i < 2; i++) { // 报错,i未声明  }
因此,嚴格模式下,變數都必須先用var指令宣告,然後再使用。

禁止this關鍵字指向全域物件

function f(){    return !this;
  } 
  // 返回false,因为"this"指向全局对象,"!this"就是false  function f(){     "use strict";
    return !this;
  } 
  // 返回true,因为严格模式下,this的值为undefined,所以"!this"为true。
因此,使用建構函式時,如果忘了加new,this不再指向全域對象,而是報錯。

function f(){    "use strict";
    this.a = 1;
  };
  f();// 报错,this未定义
###禁止刪除變數######嚴格模式下無法刪除變數。只有configurable設定為true的物件屬性,才能被刪除。 ###
"use strict";
  var x;
  delete x; // 语法错误  var o = Object.create(null, {'x': {
      value: 1,
      configurable: true  }});
  delete o.x; // 删除成功
###物件不能有重名的屬性######正常模式下,如果物件有多個重名屬性,最後賦值的那個屬性會覆寫前面的值。嚴格模式下,這屬於文法錯誤。 ###
"use strict";
  var o = {
    p: 1,
    p: 2  }; // 语法错误
###函數不能有重名的參數######正常模式下,如果函數有多個重名的參數,可以用arguments[i]讀取。嚴格模式下,這屬於文法錯誤。 ###
 "use strict";
  function f(a, a, b) { // 语法错误    return ;
  }
###相關推薦:############JS嚴格模式實例講解############詳細介紹JavaScript中的嚴格模式#### ########JavaScript嚴格模式詳解_javascript技巧#######

以上是javascript中"use strict"嚴格模式詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn