0
爲什麼coffeescript不返回對象鍵,而是將x的值視爲字符串'x'?Coffeescript正在執行列表理解對象
coffee> a = { test: '0', super: '1' }
coffee> x for x,y of a
[ 'test', 'super' ]
coffee> {x:y} for x,y of a
[ { x: '0' }, { x: '1' } ]
爲什麼coffeescript不返回對象鍵,而是將x的值視爲字符串'x'?Coffeescript正在執行列表理解對象
coffee> a = { test: '0', super: '1' }
coffee> x for x,y of a
[ 'test', 'super' ]
coffee> {x:y} for x,y of a
[ { x: '0' }, { x: '1' } ]
因爲這就是CoffeeScript object literal syntax的工作原理。假設它按照你想要的那樣工作。如果一個地方我說會發生什麼,這一點:
window.test = 'pancakes'
那倒但test
可變進每個人的範圍和突然你a
是:
a = { 'pancakes': '0', super: '1' }
和你會在想什麼你的電腦有點廢話。因此,如果屬性名分別爲變量,而不是報價少串評估,我們都會寫出來醜陋的東西,如:
a = { 'test': '0', 'super': '1' }
只是爲了獲得可預見的和一致的結果。
我認爲最簡單的方法來得到你想要的是添加一個小功能是什麼:
objectify = (k, v) ->
o = { }
o[k] = v
o
,那麼你可以:
a = (objectify(x, y) for x, y of o)
可預見的和一致的結果在編程語言方面相當不錯。 a = {'test':'0','super':'1'}對我來說看起來不錯,因爲它避免了含糊不清。否則,coffeescript不得不做出自以爲是的猜測,在這種情況下,它猜測錯誤。感謝您的詳細解答和解決方案功能!有用! – zzart