我经常看到人们使用split方法定义填充数组的代码,如下所示:
var colors = "red,green,blue".split(',');
这与以下内容有何不同:
var colors = ["red","green","blue"];
是否只是为了避免引用每个值?
答案 0 :(得分:3)
拆分字符串是创建数组的一种不好方法。该方法存在若干问题,包括性能,稳定性和内存消耗。它需要CPU时间来解析字符串,它容易出错(双逗号,字符串中的空格等),这意味着你的脚本必须在内存中存储两倍的数据。
这不是一个好主意,很可能只是一个人在第一次学习字符串和数组时就习惯了的坏习惯。那或他们试图为某种编码工作做聪明。
根据经验,你应该将字符串解析为数组的唯一时间是你从外部源读取字符串数据并需要将其转换为本机类型。如果您已经提前知道了这些值,则应自行创建阵列。
有人可能这样做的一个可能原因是减少源代码中的字符数,交换带宽性能。 'a,b,c,d,e,f,g'.split(',')
的字符数少于['a','b','c','d','e','f','g']
。
答案 1 :(得分:1)
没有区别,只是不好的做法和懒惰,如果有的话。我能想到使用第一种方法的唯一原因是,如果数据自然以字符串形式出现并且使用数组文字使其完全不可读。