用.split()结果覆盖源变量
Overwrite source variable with .split() result
拆分先前拆分并覆盖原始变量的变量是否有任何麻烦?
的例子:
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中总是有一个空格,那么这将是上面代码中最难读的版本;)
相关文章:
- 像createComment这样的各种自定义变量名在内联javascript中被覆盖,但在外部js中没有.为什么?
- 在javascript中使用覆盖变量是不是一种糟糕的做法
- 由于异步回调,变量被覆盖
- 被覆盖的 setTimeout 变量中的函数
- 定义变量是否比在 JS 中覆盖变量使用更多的资源
- 异步Javascript变量覆盖
- 表,并选择要传递到新页面的rRow(id)(这样它就不会覆盖行选择的变量)
- 敲除js变量覆盖
- 返回语句后的函数声明全局变量不会被覆盖
- 在 forEach 循环中覆盖的变量
- 如何保护全局变量以在 Node.js 中被覆盖
- 两个函数使用相同的变量,都不会覆盖其原始变量
- 长方程与覆盖变量
- 使用相同的覆盖变量的 JavaScript 对象
- 不覆盖变量
- 每次循环覆盖变量
- 从数据库读取时覆盖变量
- JavaScript -用户的安全覆盖变量
- 覆盖变量内容javascript
- 覆盖变量或检查是否存在