es5的嚴格模式

2021-10-08 18:05:30 字數 1669 閱讀 6453

es5是ecmascript的第五個公升級版本

在原有的js中增加了

1.嚴格模式:使用嚴格模式在當前**段的頂部新增字串:「use strict」

use strict翻譯使用嚴格的

嚴格模式的4個新要求:

1.禁止給未宣告的變數賦值 在非嚴格模式下沒有宣告的變數是會自動在全域性建立該變數的,在嚴格模式下是禁止的,嚴格模式必須宣告變數才能使用該變數

//在頂部宣告嚴格模式

"use strict"

//在非嚴格模式下,是可行的,會自動在全域性建立的,但是在嚴格模式下是會報錯的

a =1;

console.

log(a)

//uncaught referenceerror:a is not defined

<

/script>

2.靜默失敗:在非嚴格模式中,執行不成功,但是不會報錯.es5對這一情況進行了改善.在嚴格模式下,已經將所有的靜默失敗都公升級了錯誤,在這個情況下便於除錯,避免歧義

3.普通函式呼叫和匿名函式自調中的this預設指undefined,而不再指window

//在非嚴格模式下

function

student

(sname,sage)

//正確的使用建構函式

var zz =

newstudent

('zhuzhu',11

) console.

log(zz)

////錯誤的使用建構函式 student函式變成了普通函式 普通函式中的this指向window

var hbb =

student

('hanbinbin',9

) console.

log(hbb)

//undefined

console.

log(window.sname)

//hanbinbin

<

/script>

//在嚴格模式下

function

student

(sname,sage)

//正確的使用建構函式

var zz =

newstudent

('zhuzhu',11

) console.

log(zz)

////錯誤的使用建構函式 student函式變成了普通函式 普通函式中的this指向undefined

var hbb =

student

('hanbinbin',9

)//報錯:uncaught typeerror: cannot set property 'sname' of undefined

//不能 修改的 屬性 sname 在 undefined中

console.

log(hbb)

console.

log(window.sname)

<

/script>

4.禁止使用arguments.callee

arguments.callee 可以自動獲取當前函式物件本身,直接用當前函式物件進行遞迴呼叫,與函式名無關了

嚴格模式下禁用: 因為遞迴呼叫效率太低了,重複計算量太大

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 2009年發布 es6 es2015 es7 es2016 在早期規範確立之前js在瀏覽器中執行時,每個瀏覽器都有定義一套自己的套路,這個被稱為混炸模式,或者怪異模式 隨著ecma js 等確立新的規範 故名思意 這種模式使用js在更嚴格的語法條件下執行,為 的執行保駕護航 1 在全域...