我寫的代碼這個代碼中遺漏了`[]`是什麼意思?
let content = new Immutable.Map({
metadata: new Immutable.Map({
cities: 2
}),
data: new Immutable.List(
new Immutable.Map({
code: 'a',
label: 'Sydney',
percentage: 35/40,
}),
new Immutable.Map({
code: 'b',
label: 'Melbourne',
percentage: 22/40,
}),
),
})
此位當我做content.getIn(['data'])
我得到一個['code', 'a']
。但我實際上期待這樣的地圖對象列表[{'code':'a', 'label':'Sydney', 'percentage':0.875}, [...]}
我意識到這是因爲我沒有把一對[]
妥善包圍Map
對象。它將按預期工作,一旦我把它們放在:
let content = new Immutable.Map({
metadata: new Immutable.Map({
cities: 2
}),
data: new Immutable.List([ // <-- missed [
new Immutable.Map({
code: 'a',
label: 'Sydney',
percentage: 35/40,
}),
new Immutable.Map({
code: 'b',
label: 'Melbourne',
percentage: 22/40,
}),
]), // <- missed ']'
})
但是沒有錯誤時,我原來的代碼版本被編譯爲JavaScript。 es6解析器如何真正理解它?爲什麼兩個map
對象變平坦,爲什麼ImmutableList
接受不兼容的參數?