2017-09-20 4 views
2
const items = ['one']; 
const obj = { 
    'one': 'foobar' 
}; 
console.log(obj[items]); 

コンソール出力は "foobar"です。1要素の配列は、角かっこの中でその要素として評価されます。

なぜ/ [items]は「1」と評価されますか?これは厳密なモードでエラーを投げるでしょうか?

+1

私は「私は前にこのような質問を見てきましたが、知っていることができます重複していると印を付けることはできません。 – Barmar

+0

私はそれが以前に尋ねられたと思ったが、私はどちらかを見つけることができなかったので、私は尋ねることにした。 – besseddrest

答えて

4

Array型のキーは使用できません。だからあなたの配列は、最初の文字列に変換し、コードは、あなたのアイテムの配列にSymbolを追加しようとする場合興味深いことに、それは動作しません

const items = ['one']; 
const obj = { 
    'one': 'foobar' 
}; 
console.log(obj[items.toString()]); 

に相当しています。

また、理由Array.toStringの仕組みで、あなたは複数の要素を持つitemsを持って、まだ同じ動作を得ることができます。

const items = [1,2]; 

const obj = { 
    '1,2': 'foobar' 
} 

console.log(obj[items]); // also works 
+0

ああ、素晴らしい説明、ありがとう! – besseddrest

+0

@besseddrest喜んで助けて!答えを受け入れることを忘れないでください。あなたが一般的にそうしている質問に答えてください。 – vittore

関連する問題