js 嚴格模式

2022-09-19 16:51:13 字數 1375 閱讀 4150

目錄

j**ascript 除了提供正常模式外,還提供了嚴格模式(strict mode)。es5 的嚴格模式是採用具有限制性 j**ascript變體的一種方式,即在嚴格的條件下執行 js **。

嚴格模式在ie10 以上版本的瀏覽器中才會被支援,舊版本瀏覽器中會被忽略。

嚴格模式對正常的j**ascript 語義做了一些更改,比如:

消除了 j**ascript 語法的一些不合理、不嚴謹之處,減少了一些怪異行為。

消除**執行的一些不安全之處,保證**執行的安全。

提高編譯器效率,增加執行速度。

禁用了在 ecmascript 的未來版本中可能會定義的一些語法,為未來新版本的 j**ascript 做好鋪墊。比如一些保留字如:class,enum,export, extends, import, super不能做變數名

語法格式'use strict';或者"use strict";

嚴格模式可以應用到整個指令碼或個別函式中。因此在使用時,我們可以將嚴格模式分為為指令碼開啟嚴格模式和為函式開啟嚴格模式兩種情況。

情況一 :為指令碼開啟嚴格模式

情況二:為函式開啟嚴格模式

注意:老版本瀏覽器(ie10之前),並不能解析user strict;語句,它會把它看做一行普通字串忽略,**並不會開啟嚴格模式。

嚴格模式對 j**ascript 的語法和行為,都做了一些改變,如下:

在正常模式中,如果乙個變數沒有宣告就賦值,預設是全域性變數。嚴格模式禁止這種用法,變數都必須先用var 命令宣告,然後再使用。

'use strict';

num = 10

console.log(num)//報錯:uncaught referenceerror: num is not defined

嚴禁刪除已經宣告變數。 例如,delete x;語法是錯誤的

'use strict';

var num2 = 1;

delete num2;//報錯:uncaught syntaxerror: delete of an unqualified identifier in strict mode.

嚴格模式下 this 指向問題

函式變化

更多嚴格模式要求參考

js 嚴格模式

基於es3.0和es5.0新增的方法使用的,es3.0和es5.0產生矛盾的地方在嚴格模式下就是採用的es5.0,否則js解析採用es3.0 注意 use strict 要放在邏輯的最頂端 的最頂端,有作用範圍,在函式最頂端就是當前函式採取嚴格模式 嚴格模式 1.不允許用with with可以改變作...

js 嚴格模式

簡單整理一下js嚴格模式下的變化。整理 mdn 部分 測試環境 chrome 76.0.3809.132 use strict mistypedvaraible 17 這一行 就會丟擲 referenceerror。不可以不寫宣告 主流瀏覽器現在實現了嚴格模式。但是不要盲目的依賴它,因為市場上仍然有...

js嚴格模式

es6 的模組自動採用嚴格模式,不管你有沒有在模組頭部加上 use strict 嚴格模式主要有以下限制。變數必須宣告後再使用 函式的引數不能有同名屬性,否則報錯 不能使用with語句 不能對唯讀屬性賦值,否則報錯 不能使用字首0表示八進位制數,否則報錯 不能刪除不可刪除的屬性,否則報錯 不能刪除變...