簡體   English   中英

如何保護全局變量以防止在Node.js中被覆蓋?

[英]How to protect globals variables for beeing overridden in Node.js?

我想知道是否有任何方法可以確保Node.js程序中不會錯誤地覆蓋某些變量。

由於無法像Java一樣將var設置為final ,因此我看不到任何方法可以確保可以從任何地方(甚至是EJS之類的模板文件)覆蓋的全局變量的穩定性。

非回歸測試,代碼審查,使用軟件包等是檢測或避免此類錯誤的一些方法 ,但是我想知道是否可以在Node中特別使用更強大的功能。

您可以創建不可寫或凍結的對象

var obj = {
    test : 'test'
}

Object.freeze(obj);

obj.test = 'something else';

console.log(obj.test); // still "test"

據我所知,沒有辦法鎖定變量,只有對象的屬性

除了其他人提到的Object.freeze之外,node.js還應該支持const關鍵字,至少在啟用es6的情況下運行。 但是,這是針對塊作用域變量,而不是針對屬性。

或者,可以使用Object.defineProperty定義不可寫的,不可配置的屬性。 盡管我自己尚未測試過,但這也應該適用於模塊或全局對象。

暫無
暫無

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

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