JavaScript 的全域變數(通常會作為視窗屬性存取)在您需要消除後續腳本中的存在時可能會帶來挑戰。將其指定為未定義可能不是最有效的方法。
要有效刪除變數,我們必須考慮其定義方法:
使用var 宣告的變數駐留在附加到其各自作用域(函數或全域物件的屬性)的「變數環境」中。刪除此類變數是不可能的。例如:
var g_a = 1; // Define using `var` delete g_a; // Returns `false` console.log(g_a); // Outputs: 1
不帶 var 宣告的變數在「詞法環境」(環境的分層結構)中尋找。頂級 LexicalEnvironment 綁定到全域對象,允許在沒有 var 的情況下存取其屬性。這些屬性可以被刪除:
g_b = 1; // Define without `var` delete g_b; // Returns `true` console.log(g_b); // Error: `g_b` not defined
使用var 建立的引用儲存在VariableEnvironment 中,該環境禁止刪除,除非在eval 上下文中(不是常見於瀏覽器開發中)。
LexicalEnvironments 是巢狀的,如果在目前或外部環境中找不到引用,則可以從全域物件檢索屬性。在本例中,物件的屬性可以被刪除。
以上是如何有效刪除 JavaScript 變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!