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 在全域...