如果要拆分的字符串连接在一起,为什么// Single line
var x = "foo,bar,boo,far".split(",");
// Concatenation
var y = "foo,bar," +
"boo,far".split(",");
// Output
document.write("<pre>");
document.write(x + " :" + typeof x + "\n");
document.write(y + " :" + typeof y + "\n");
document.write("</pre>");
会返回完整的字符串?
.split(",")
&#13;
在我的实际代码中,字符串非常长,并且在最后一行连接{{1}}的多行。
那么为什么会产生完整的字符串而不是预期的数组?
答案 0 :(得分:2)
事实证明,问题是运营商优先级之一。它在不同的路线上并不重要。重要的是,.
和()
的优先级高于+
,因此.split()
仅在最后一个块上执行。
所以在分手后发生了什么:
var y = "foo,bar," + ["boo", "far"];
因为数组被转换为字符串,并且因为默认的.toString()
只是使用,
加入数组,所以我们最终得到了这个:
var y = "foo,bar," + "boo,far";
导致看起来像原始字符串。
添加parens解决了这个问题。
var y = ("foo,bar," +
"boo,far").split(",");