4 回答

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊
引用一些有趣的部分:
嚴(yán)格模式是ECMAScript 5中的一個(gè)新特性,它允許您將程序或函數(shù)置于“嚴(yán)格”操作上下文中。這種嚴(yán)格的上下文阻止了某些操作的執(zhí)行,并引發(fā)了更多的異常。
以及:
嚴(yán)格模式在以下幾方面有所幫助:
- 它捕捉到一些常見的代碼bloopers,并拋出異常。
- 當(dāng)采取相對(duì)“不安全”的操作(例如訪問全局對(duì)象)時(shí),它會(huì)防止或拋出錯(cuò)誤。
- 它禁用了那些令人困惑或思想不清的特性。
還請(qǐng)注意,您可以將“嚴(yán)格模式”應(yīng)用于整個(gè)文件.也可以只用于特定的函數(shù)。(仍引用John Resig的文章):
//?Non-strict?code...(function(){ ??"use?strict"; ??//?Define?your?library?strictly...})();//?Non-strict?code...
如果必須混合新舊代碼,這可能會(huì)有所幫助;-)
所以,我想這有點(diǎn)像"use strict"
您可以在perl中使用(因此得名?)通過檢測(cè)更多可能導(dǎo)致斷裂的東西,它可以幫助你減少錯(cuò)誤。
嚴(yán)格模式現(xiàn)在所有主要瀏覽器都支持..如果您正在編寫JavaScript本機(jī)ECMAScript模塊(與import
和export
語句),則始終啟用嚴(yán)格模式,并且不能禁用。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
這是ECMAScript 5的一個(gè)新特性
它只是放入JavaScript文件(文件頂部或函數(shù)內(nèi)部)中的一個(gè)字符串,如下所示:
"use?strict";
現(xiàn)在將它放入您的代碼中不會(huì)對(duì)當(dāng)前瀏覽器造成任何問題,因?yàn)樗皇且粋€(gè)字符串。如果您的代碼違反了該實(shí)用程序,它可能會(huì)在將來引起您的代碼問題。例如,如果您當(dāng)前有foo = "bar"
不定義foo
首先,您的代碼將開始失敗.在我看來這是一件好事。

TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
聲明"use strict";
指示瀏覽器使用嚴(yán)格模式,這是一組簡(jiǎn)化的、更安全的JavaScript特性集。
功能清單(并非詳盡無遺)
不允許全局變量。(漁獲物失蹤
var
聲明和變量名稱的鍵入)無聲的失敗分配將在嚴(yán)格模式下拋出錯(cuò)誤(賦值)。
NaN = 5;
)刪除不可刪除屬性的嘗試將引發(fā)(
delete Object.prototype
)要求對(duì)象文本中的所有屬性名稱都是唯一的(
var x = {x1: "1", x1: "2"}
)函數(shù)參數(shù)名稱必須是唯一的(
function sum (x, x) {...}
)禁止八進(jìn)制語法(
var x = 023;
有些開發(fā)人員錯(cuò)誤地認(rèn)為前面的零不會(huì)改變數(shù)字。)禁止
with
關(guān)鍵詞eval
在嚴(yán)格模式下不引入新變量。禁止刪除普通名稱(
delete x;
)禁止綁定或指定名稱
eval
和arguments
以任何形式嚴(yán)格模式不別名
arguments
對(duì)象的形式參數(shù)。(即function sum (a,b) { return arguments[0] + b;}
這是因?yàn)?code>arguments[0]注定要a
諸若此類。)arguments.callee
不支持
添加回答
舉報(bào)