'use strict';安全
1、嚴格模式的意義:經過嚴格模式,會在函數內部進行更嚴格的錯誤條件檢測函數
2、嚴格模式的影響this
① 全部的變量必須使用var 關鍵字聲明
② 不能使用delete關鍵字刪除全局變量 ,之前默認刪除失敗,嚴格模式下直接報錯
③ 在對象中不容許有同名的屬性
④ 函數的參數必須惟一(不能出現同名的參數)
⑤ arguments對象的行爲不一樣,在非嚴格模式下修改形參的值會反映到arguments中,而嚴格模式下則相對獨立
⑥ 禁用了argument.callee和caller函數,他們一個引用函數自己,一個引用調用函數
⑦ 不能在if語句中聲明函數
⑧ 禁止使用eval和argument做爲標識符
⑨ 修正this的值,在嚴格模式下,函數this的值始終是指定的值,不管指定的是什麼值。
10 禁用了with語句
11 去掉了JavaScript中的八進制字面量(以0開頭的八進制字面量是無效的語法)spa
*嚴格模式下禁止 this 指向全局變量,會指向undefined對象
設立"嚴格模式"的目的,主要有如下幾個:ip
- 消除Javascript語法的一些不合理、不嚴謹之處,減小一些怪異行爲;字符串
- 消除代碼運行的一些不安全之處,保證代碼運行的安全;編譯器
- 提升編譯器效率,增長運行速度;it
-這種語法實現了向後兼容模式,支持嚴格模式的引擎檢測到關鍵字會啓動嚴格模式,不支持的引擎就當時遇到了一個沒有賦值的字符串,作忽略處理。編譯
- 爲將來新版本的Javascript作好鋪墊。