簡體   English   中英

必須將“use strict”設置為在凍結對象上觸發嚴格模式錯誤?

[英]Where must “use strict” be set to trigger strict-mode errors on frozen objects?

從ES5開始,我們可以使用Object.freeze()來鎖定對象。

但是如果你在sloppy模式下運行JS,除非你激活strict-mode,否則任何對屬性的寫入都會無聲地失敗。

但是你需要在哪里設置它? 我使用模塊系統(node.js / amd),因此涉及一堆文件/范圍:

  1. 最初創建對象的范圍。
  2. 在對象上調用Object.freeze()的范圍。
  3. 嘗試更改對象屬性的范圍。
  4. 全球范圍
  5. ???

哪一個必須(繼承)'use strict'指令來觸發錯誤?

最初創建對象的范圍。

不,那沒關系。

在對象上調用Object.freeze()的范圍。

這只有在freeze時才有意義。

嘗試更改對象屬性的范圍。

是。 [[Put]]在評估引用為strict時拋出,引用由屬性訪問器構造,如下所示:

7.如果正在評估的語法生成包含在嚴格模式代碼中,則let strict為true,否則let strict為false。

8.返回類型為Reference的值,其基值為baseValue,其引用名稱為propertyNameString,其嚴格模式標志為strict。

全球范圍

不,你不能嚴格要求“全球范圍”。 嚴格性是程序代碼的屬性,其中最高級別的單元是“程序代碼” - 在您的情況下是模塊文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM