如何啟用嚴格模式:在js執行頂端加上 「use strict」 注意是字串
js 如果給未宣告的變數會自動把這個變數載入到全域性作用域下,這樣導致的後果 造成全域性汙染 在嚴格模式下會報錯禁止給未宣告的變數強行賦值,報錯: *** is not defined。——防止全域性汙染,也減少了拼寫錯誤導致的誤會
什麼叫靜默失敗 就是有錯誤也不會報錯,但是在嚴格模式下會報錯便於我們快速發現問題
一般來說呼叫乙個函式 如果函式體內出現 this.a **執行到這裡的時候this的指向問題 this 指的是window 例如:
<
!doctype html>
"en"
>
"utf-8"
>
"viewport" content=
"width=device-width, initial-scale=1.0"
>
"x-ua-compatible" content=
"ie=edge"
>
document<
/title>
<
/head>
(function()
)()// **首先匿名函式自呼叫執行函式裡面的** 執行到this.a 因為在當前的臨時作用域物件沒有a 因為this.a 是相當於在全域性新增了乙個a d但是在嚴格模式下會報錯**
<
/script>
<
/body>
<
/html>
function
f(n)
else
// arguments.callee 代表的是函式名 一般用在遞迴中 為什麼禁用 因為遞迴演算法不好 重複量太大
ES5新特性 嚴格模式
目的 消除語法不合理 不嚴謹 消除執行不安全 提高速度 新版本模組化做鋪墊 語法 use strict 是乙個指令,指示直譯器用更嚴格的方式檢查 如何呼叫 use strict a 3 console.log a 報錯 b 4 console.log b 4 script 針對單個函式 放在函式體的...
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 改變作用域鏈 ...