據我所知,在ECMAScript 5(也稱爲ES5)中使用引用strict mode
進行初始化時,它是一個參數設置爲true的屬性。當設置了strict mode
時,更多操作將導致錯誤(語法,參考,例如初始化一個變量,而不使用關鍵字var
)。有關strict mode
的更多信息,請參閱MDN-documentation。
[編輯]根據意見 我認爲這是範圍strict mode
被定義。因此,在
function strict()
{ 'use strict';
// from here on and within the function
// IsStrictReference is true
showme = "Am I defined?";
return "Hi! I'm a strict mode function! " + showme;
}
function nonstrict()
{
// IsStrictReference is ... well, undefined I suppose, or false by default
showme2 = "Am I defined?";
return "Hi! I'm NOT a strict mode function! " + showme2;
}
strict(); //=> ReferenceError: showme is not defined
notstrict(); //=> "Hi! I'm NOT a strict mode function! Am I defined?"
執行strict()
拋出一個ReferenceError
,但nonstrict()
沒有。如果您已將use strict
-語句放置在功能塊之外,則執行這兩個函數將會拋出ReferenceError
。
這可能是一個解釋。但是在一個程序中可能會有嚴格和非嚴格的代碼混合。因此,在哪個規則中,我們可以告訴該屬性的值,所生成的引用是否是嚴格代碼的位置,或者是否使用嚴格代碼或blabla創建基礎。我很困惑。 – tdsparrow 2012-07-28 15:42:56
Hi @tdsparrow,請參閱編輯。我建議您(重新)仔細閱讀MDN文檔的鏈接。 – KooiInc 2012-07-28 16:10:29
謝謝@Kooilnc,我向你提供了建議,但是重新閱讀了es5。我想我找到了答案。在[Identifier Resolution](標識符分辨率)(http://es5.github.com/#x10.3.1)中已經很清楚地解釋了,在標識符分辨率過程中會創建'reference',環繞代碼是否嚴格將決定參照中的「嚴格參考」標誌。 – tdsparrow 2012-07-29 02:55:42