嚴格模式下禁止 this 指向全局變量

'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作好鋪墊。

相關文章
相關標籤/搜索