What do you make of this?
var x = {a: 1}; //=> {a: 1}
var y = Object.keys(x); //=> ['a']
x[y] //=> 1
if y = ['a']
, x[y]
is the same as doing x[['a']]
, right?
x[['a']]; //=> 1
x[[['a']]]; //=> 1
x[[[[[[[['a']]]]]]]]; //=> 1
Can someone explain what's happening here? Why does this work?
Property names have to be strings. If you try to use an array as a property name, it gets its toString()
method called implicitly. That generates a string containing a comma-separated list of its values.
> var array = ['a', 'b', 'c'];
undefined
> array.toString();
'a,b,c'
If you only have one value, then there aren't any commas.
> var array = ['a'];
undefined
> array.toString();
'a'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With