“a,b,c”.split(“,”)优于[“a”,“b”,“c”]的优势是什么?

时间:2011-12-27 01:36:43

标签: javascript

我在几个地方看过这个,最值得注意的是HTML5 Boilerplateplugins.js文件,我不确定原因。

使用

之类的东西背后的动机是什么
var d = "header,nav,footer".split(",");

而不是

var d = ["header", "nav", "footer"];

6 个答案:

答案 0 :(得分:12)

Moore's Law的无情压力下,找到软件消耗更多CPU周期来完成同样工作的方法非常重要。您的特定情况(使用split而不是首先写出您的意思)就是“微观优化”的一个例子。

虽然有更有效的方法可以获得低效率(代码生成模板,预处理器和类似工具),但对于程序员来说,掌握大量此类技巧非常重要。

答案 1 :(得分:1)

通常人们更喜欢能够在单个字符串中编写内容,而不必使用引号等编写单独的字符串。

但是 - 如果可能的话 - 用空格而不是逗号来做它通常更好,因为在许多语言中,如果没有指定参数,split()函数将使用它们作为默认分隔符。

但总而言之 - 这只是开发人员喜欢写的问题。它肯定不会更快,但差别根本不重要(无论如何你不会称之为十亿次,你是吗?)

答案 2 :(得分:1)

这可能是重构不完整的结果:也许字符串最初来自配置文件(或者计划将其拆分为配置文件),或者来自用户输入。在这种情况下,从字符串中拆分是很自然的。

或者甚至可以匹配使用这种输入方式的另一部分的样式。也许是这样的:

function get_sections()
{
   if has_config()
   {
      return get_config("sections").split(",");
   }
   return "header,nav,footer".split(",");
}

第三种选择可能是使翻译更容易。

并非我在其中任何一种情况下都会使用它,但对某些开发人员来说可能有意义。

答案 3 :(得分:0)

没有优势。实际上,对字符串上的方法的调用可能效率稍差(我没有检查过),但可能没那么多。

这只是个人偏好。此外,人们倾向于使用任何语言的string.split()获得高分。它很性感。

答案 4 :(得分:0)

为什么要写x *(1000/4),如果你能写x * 250?我的意思是为什么给运行时额外的头痛解析,分裂(由于缺少逗号,字符串内部的逗号等错误的可能性等)?在编写代码时,我没有看到任何更奇怪的编码约定。

答案 5 :(得分:0)

更容易输入,因为您的报价较少。不适合比单词列表更复杂的东西。