ES5 嚴格模式

2022-10-09 06:57:16 字數 795 閱讀 5624

歷史:

es5:2023年發布

es6:es2015

es7:es2016

在早期規範確立之前js在瀏覽器中執行時,每個瀏覽器都有定義一套自己的套路,這個被稱為混炸模式,或者怪異模式;隨著ecma js 等確立新的規範;故名思意:這種模式使用js在更嚴格的語法條件下執行,為**的執行保駕護航;

1):在全域性或者函式的第一條語句定義為:』use strict『,將』use strict『放在函式體的第一行,則整個函式以嚴格模式執行

2):如果瀏覽器不支援,只能解析為一條簡單的語句,沒有任何***

1):嚴格模式修復了一些導致js引擎難以執行優化的缺陷,有時候,相同**嚴格模式可以比非嚴格模式執行的更快。

2);消除**執行的一些不安全之處,為**的安全執行保駕護航;

3);為未來版本的js做好的鋪墊

1):在預設情況下 先輸出後定義不會報錯的 在嚴格模式下會報錯:

變數必須宣告才能使用;(在預設模式中宣告變數不賦值預設是全域性變數)在嚴格模式下不允許;

2):禁止自定義的函式中的this指向window(在嚴格模式下全域性作用域中定義的函式中的this為undefined)怕你將屬性加到全域性上造成變數汙染,所以直接禁用;

3);建立eval作用域(正常模式下,js有兩種變數作用域,全域性和區域性,正常模式下eval語句作用域取決於它處於全域性還是區域性下,嚴格模式下eval語句本身就是作用域,

不能夠生成全域性變數,所生成的變數只能用於eval內部)

4):禁止在函式內部遍歷呼叫棧(呼叫當前的函式的引用,即外層函式的引用);

5):變數不能重名;

ES5 嚴格模式

在es5中可以開啟一種嚴格模式的 形式,開啟方式是 將全域性或者函式的第一條語句定義為 use strict 如果瀏覽器不支援,會將其解析為一條普通語句,沒有任何的 開啟全域性模式後會有一下的一些約束 1.第一次定義變數的時候必須使用var。如 test heihei alert test 該語句在...

es5嚴格模式

es3和es5產生衝突的部分使用es5的方法,否則使用es3 use strict 變數賦值前必須宣告,var a b 2 b沒有定義 區域性this必須被賦值 賦給什麼就是什麼 拒絕重複屬性和引數 arguments.calle 不能被使用 function.caller with 改變作用域鏈 ...

ES5之嚴格模式

除了正常執行模式 混雜模式 es5新增了第二種執行模式 嚴格模式 strict mode 顧名思義這種模式使得js在更嚴格的語法條件下執行。目的 作用 消除js語法的一些不合理,不嚴謹之處,減少一些怪異行為,消除 執行的一些不安全之處,為 的安全執行保駕護航,為未來新版本的js做好鋪墊 使用 在全域...