摆弄一些 JavaScript,我认为应该产生错误的东西碰巧按预期工作了。 [].join()
似乎可以展平任何深度的嵌套数组。
var arr = [['a'], ['b'], ['c']];
arr.join('-'); // => 'a-b-c'
甚至var arr = [['a'], [[[[[[[[['b']]]]]]]]], ['c']];
返回与上面完全相同的结果。
这特别奇怪,因为它返回对象的预期(错误)行为:
var arr = [{}, {}, {}];
arr.join('-'); // => '[object Object]-[object Object]-[object Object]'
想知道这是最新版 Chrome (53.0.2785.116) 的一项功能、有意为之还是一个错误?
最佳答案
这是 ['a']
上默认 toString
行为导致 'a'
的结果。因此,[['a']].toString()
also 结果为 'a'
。在控制台中尝试一下应该可以清楚地表明这一点。如果数组有多个元素,您会看到差异,因为 ['a', 'b'].toString()
会产生 'a,b'
。
关于javascript - 为什么 Array.prototype.join() 会展平任意深度的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39843813/