具有1个元素的数组在括号中被评估为该元素

时间:2017-09-20 23:14:00

标签: javascript arrays

    URLSession.shared.dataTask(with: my_url) { (response_data, url_response, communication_error) in
        print ("Hello World")
    }

控制台输出是" foobar"。

const items = ['one']; const obj = { 'one': 'foobar' }; console.log(obj[items]); 为什么/如何评估"一个"?这会在严格模式下抛出错误吗?

1 个答案:

答案 0 :(得分:4)

您不能拥有Array类型的键。因此,您的数组首先转换为字符串,代码等同于

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

有趣的是,如果您尝试将Symbol添加到商品数组中,它将无效。

此外,由于Array.toString的工作方式,您可以使items具有多个元素,并且仍然可以获得相同的行为:

const items = [1,2];

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

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