2015-09-05 46 views
0

我發現自己,由於與這裏無關的原因,但涉及機器生成的代碼,需要創建名稱爲Javascript保留字的變量。作爲保留字的Javascript變量名稱

例如,使用對象文本,可以援引鍵,如果他們是無效的標識符:

var o = { validIdentifier: 1, "not a valid identifier": 2 }; 

是否有類似的技術,它可以用於簡單變量引用?

圍繞規範捅表明,用於是,允許一個機制,通過濫用Unicode轉義:

f\u0075nction = 7; 

然而,這似乎令人難以置信的曖昧,而且顯然迅速消失(雖然我最近Chrome似乎仍然支持它)。有一個更現代的等值?

+2

是什麼原因,你想做到這一點? – jfriend00

+2

*「因爲與此無關的原因」*可能不像您想象的那麼無關緊要。 –

回答

0

是否有更現代的等值?

編號保留字不能用作變量名稱。你可以使用看起來像這些詞的,但就是這樣。

spec

一個保留字是一個IdentifierName不能用作標識符


僅供參考,保留字可以作爲屬性名稱,甚至不帶引號:

var o = { function: 1 }; 
+0

關於最後一項:我的錯誤,我錯誤地進行了測試。關於前者:仍然希望一些奇怪的現象會爬出規範的一些不起眼的角落...... –

0

變量名稱不能是保留字。

你總是可以做壞事,如:

window["function"] = 'foo'; 
console.log(window.function); 
> foo 

你仍然不能引用它,使用保留,因爲它保留。

這是機器生成的代碼意味着無論是生成代碼是打破。

0

如果他們是對象鍵,你可以稱他們爲你喜歡的(甚至是保留的名字),並且你不需要引用它們。

var o = { function: 'a' } 

console.log(o.function) // a 

DEMO