我正在做一个JS测验,并且发现了这个问题。
这个函数返回什么?
function Batman() { return Array(4).join("lol" - 2) + " Batman!"; }
这实际上恰好回归 NaNNaNNaN Batman!,我发现这很有趣。 但为什么它会回归呢?我的意思是它存储了3次NaN并突然跳过它并将蝙蝠侠放入最终索引。虽然afaik对每个数组索引都会发生完全相同的事情。
答案 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!
”。
答案 2 :(得分:0)
表达式Array(4).join("lol" - 2)
返回一个由3个NaN组成的字符串。 +
运算符连接“蝙蝠侠!”在前一个字符串的末尾(它不会将任何项附加到任何数组,因为join()返回一个字符串)。所以,函数返回那个有趣的句子。