嚴格模式備忘

2021-07-26 20:54:41 字數 815 閱讀 3643

嚴格模式中意外建立全域性變數被丟擲錯誤替代

靜默失敗的賦值操作 (給不可寫屬性賦值, 給唯讀屬性(getter-only)賦值賦值, 給不可擴充套件物件(non-extensible object)的新屬性賦值)

試圖刪除不可刪除的屬性時會丟擲異常(之前這種操作不會產生任何效果)

乙個物件內的所有屬性名在物件內必須唯一

嚴格模式下重名引數被認為是語法錯誤

嚴格模式禁止八進位制數字語法

嚴格模式簡化了**中變數名字對映到變數定義的方式

嚴格模式禁用 with

嚴格模式下的 eval 不在為上層範圍(surrounding scope,注:包圍eval**塊的範圍)引入新變數

嚴格模式禁止刪除宣告變數

讓eval和arguments變的簡單

名稱 eval 和 arguments 不能通過程式語法被繫結(be bound)或賦值

引數的值不會隨 arguments 物件的值的改變而變化

不再支援 arguments.callee

指定的this不再被封裝為物件,而且如果沒有指定this的話它值是undefined:

fun.caller和fun.arguments都是不可刪除的屬性而且在存值、取值時都會報錯

arguments不會再提供訪問與呼叫這個函式相關的變數的途徑

嚴格模式中一部分字元變成了保留的關鍵字。這些字元包括implements, inte***ce, let, package, private, protected, public, static和yield。

嚴格模式禁止了不在指令碼或者函式層面上的函式宣告

JavaScript嚴格模式與非嚴格模式之間的區別

嚴格模式 非嚴格模式 禁止使用with語句 允許使用with語句 所有變數要先宣告 使用未宣告的變數將隱式宣告為全域性變數 函式 非方法 中的this是undefinedthis是全域性物件 給唯讀屬性和不可擴充套件的物件建立新成員將丟擲型別錯誤異常 只是簡單的操作失敗 傳入eval 的 不能在定義...

MySQL 嚴格模式與非嚴格模式

檢視 mysql 是否是嚴格模式 select sql mode 如果顯示包含 strict trans tables 或 strict all tables,則代表 mysql 開啟了嚴格模式 反之,是非嚴格模式 非嚴格模式是乙個相對概念 對於 innodb 引擎來說,strict trans t...

mysql 嚴格模式 MySql 嚴格模式相關配置

mysql 嚴格模式 mysql的sql mode合理設定 sql mode是個很容易被忽視的變數,預設值是空值,在這種設定下是可以允許一些非法操作的,比如允許一些非法資料的插入。在生產環境必須將這個值設定為嚴格模式,所以開發 測試環境的資料庫也必須要設定,這樣在開發測試階段就可以發現問題.sql ...