Javascript 使用.split()结果覆盖源变量
拆分之前拆分的变量并在执行此操作时覆盖原始变量是否有任何问题 例如:Javascript 使用.split()结果覆盖源变量,javascript,arrays,split,Javascript,Arrays,Split,拆分之前拆分的变量并在执行此操作时覆盖原始变量是否有任何问题 例如: arr = str.split(" "); arr = arr[0].split("/"); 我对它进行了测试,效果良好。但是: 这样做有风险吗 它会在任何时候、所有浏览器上都像我期望的那样运行吗 在所有浏览器中都可以。没有风险 您只需指定变量arr来引用新的内容,它过去引用什么并不重要。(这实际上并不“覆盖旧数组”,但如果没有对旧数组的其他引用,垃圾收集器将处理它。) 您也可以在一行中完成: arr=str.split(
arr = str.split(" ");
arr = arr[0].split("/");
我对它进行了测试,效果良好。但是:
- 这样做有风险吗
- 它会在任何时候、所有浏览器上都像我期望的那样运行吗
- 在所有浏览器中都可以。没有风险
您只需指定变量
arr
来引用新的内容,它过去引用什么并不重要。(这实际上并不“覆盖旧数组”,但如果没有对旧数组的其他引用,垃圾收集器将处理它。)
您也可以在一行中完成:
arr=str.split(" ")[0].split("/");
请注意,始终返回至少包含一个元素的数组,即使源字符串为空或不包含分隔符
编辑:如果源字符串和分隔符都是空字符串
。split()
似乎返回空数组。也就是说,”。split(“”)返回[]
。谢谢穆尼姆指出这一点。(但是“”.split(“”
返回[“”]
,因此对于这个问题来说没有问题。)在所有浏览器中都可以。没有风险
您只需指定变量arr
来引用新的内容,它过去引用什么并不重要。(这实际上并不“覆盖旧数组”,但如果没有对旧数组的其他引用,垃圾收集器将处理它。)
您也可以在一行中完成:
arr=str.split(" ")[0].split("/");
请注意,始终返回至少包含一个元素的数组,即使源字符串为空或不包含分隔符
编辑:如果源字符串和分隔符都是空字符串。split()
似乎返回空数组。也就是说,”。split(“”)返回[]
。谢谢穆尼姆指出这一点。(但是“”.split(“”
返回[“”]
,因此就这个问题而言没有问题。)如果您知道arr正在被完全覆盖,则一点风险都没有。对于较大的代码块或者其他人要阅读它,这样做可能是不好的做法,但从逻辑上讲,这并没有错。
如果您想变得更加神秘,请尝试以下方法:
arr=str.split(“”[0]。split(“”/“”)
当然,您必须确保所有不同的部分都进行了计算(例如,如果没有空格,[0]将为null,您将得到一个错误)。
如果您知道str中始终有一个空格,那么这将是上述代码中最难阅读的版本;)如果您知道arr被完全覆盖,则一点风险都没有。对于较大的代码块或者其他人要阅读它,这样做可能是不好的做法,但从逻辑上讲,这并没有错。
如果您想变得更加神秘,请尝试以下方法:
arr=str.split(“”[0]。split(“”/“”)
当然,您必须确保所有不同的部分都进行了计算(例如,如果没有空格,[0]将为null,您将得到一个错误)。
如果您知道str中总是有空格,那么这将是上述代码最难阅读的版本;)我会将其修改为类似arr=str.split(“”);arr=arr?arr[0]。拆分(“/”):“
,除非在空间上拆分返回0结果时希望它出错。在某些情况下,我有这样做的习惯,因此我不必创建一组只是暂时的变量。我认为这样做没有任何问题,它可以在所有浏览器上运行。只要arr的元素数>0就可以了。@Munim,@JesseB-the.split()
方法总是返回一个非空数组,即使源字符串是空的或不包含分隔符。@Jared Farrish,你的网站是“有趣的”。。。heheI将其修改为类似于arr=str.split(“”);arr=arr?arr[0]。拆分(“/”):“
,除非在空间上拆分返回0结果时希望它出错。在某些情况下,我有这样做的习惯,因此我不必创建一组只是暂时的变量。我认为这样做没有任何问题,它可以在所有浏览器上运行。只要arr的元素数>0就可以了。@Munim,@JesseB-the.split()
方法总是返回一个非空数组,即使源字符串是空的或不包含分隔符。@Jared Farrish,你的网站是“有趣的”。。。呵呵