join()如何工作?

时间:2014-08-30 10:40:06

标签: javascript

我正在做一个JS测验,并且发现了这个问题。

  

这个函数返回什么?

function Batman()
{
  return Array(4).join("lol" - 2) + " Batman!";
}

这实际上恰好回归 NaNNaNNaN Batman!,我发现这很有趣。 但为什么它会回归呢?我的意思是它存储了3次NaN并突然跳过它并将蝙蝠侠放入最终索引。虽然afaik对每个数组索引都会发生完全相同的事情。

3 个答案:

答案 0 :(得分:3)

我没有得到你想做的事。

你的功能就像波纹管一样。

Array(4) //retruns [undefined × 4]

你在说

[undefined × 4].join("lol"-2)

此处因为"lol"-2返回NaN,它将返回"NaNNaNNaN"

然后你将结果追加到" Batman!",所以最后的结果将是

"NaNNaNNaN Batman!"

答案 1 :(得分:2)

代码尝试从"lol"中减去2。但由于"lol"不是数字,结果也不是数字;由内部表示的值称为“非数字”,或简称为“NaN”。

你在阵列中有几个。当你尝试将它们作为字符串连接在一起时,并添加“蝙蝠侠!”最后,NaN被转换为最合理的字符串表示,只有NaN

所以你最终会得到几份“NaN”,然后是“Batman!”。

请参阅Wikipedia's entry on NaN

答案 2 :(得分:0)

表达式Array(4).join("lol" - 2)返回一个由3个NaN组成的字符串。 +运算符连接“蝙蝠侠!”在前一个字符串的末尾(它不会将任何项附加到任何数组,因为join()返回一个字符串)。所以,函数返回那个有趣的句子。