用.split()结果覆盖源变量

Overwrite source variable with .split() result

本文关键字:覆盖 变量 结果 split      更新时间:2023-09-26

拆分先前拆分并覆盖原始变量的变量是否有任何麻烦?

的例子:

arr = str.split(" ");
arr = arr[0].split("/");

我测试了它,它工作。但是:

  • 这样做有风险吗?
  • 它会像我期望的那样在任何时候,在所有浏览器上运行吗?

这在所有浏览器中都没问题。没有风险。

你只是赋值变量arr指向新的东西,它过去指向什么并不重要。(这实际上并没有"覆盖旧数组",但如果没有其他对旧数组的引用,垃圾收集器将处理它。)

您也可以在一行中完成:

arr=str.split(" ")[0].split("/");

注意,根据MDN, .split()总是返回一个至少包含一个元素的数组,即使源字符串为空或不包含分隔符。

编辑:如果源字符串分隔符都是空字符串.split()似乎返回一个空数组。即,"".split("")返回[]。谢谢穆妮指出这一点。(但是"".split(" ")返回[""],所以对于这个问题来说没有问题。)

如果您知道arr被完全覆盖,那么这一点都不危险。对于较大的代码片段或其他人要阅读它时,这样做可能是不好的做法,但从逻辑上讲,这并没有错。如果你想变得更神秘,试试这个:arr = str。分割(" ")[0].split("/");

当然,您必须确保所有不同的部分都求值(例如,如果没有空格,则[0]将为空,并且您将得到一个错误。如果你知道str中总是有一个空格,那么这将是上面代码中最难读的版本;)