["a","b", , "c"].join() 相当于
一个Array实例的方法调用,首先要检查这个对象有没有这个方法,然后join方法要调用第0到第n-1个属性值的toString(),还要考虑被删掉或省略掉的0-(n-1)属性,怎么快呢?
join如果把结果串的长度计算出来,是不是假设数组元素都是string类型的,还是调用toString之后算出来的?
当然,如果运行环境对string数组的join做了特别的实现,那另就是想让哪个快就让哪个快,即使快不了,我也可以让另一个慢下来,没什么意义。
而+对string的操作属于简单类型的操作符,+是标准定义好的,join的优化完全可以用在join上;如果运行环境把这个弄得不快只能说环境有点奇怪。
【 在 vonNeumann (劣币驱逐良币 | Busy) 的大作中提到: 】
: 这可不一定,这取决于实现。大量字符串拼接时,join 可以先把结果串的长度算出来才开始拷内容,避免反复重新分配内存。
: 当然现在 js 通常是直接用加号更快了。而 Python 至今仍然是 join 比加快。
: Browser string optimizations have changed the string concatenation picture.
: ...................
--
修改:ottffsse FROM 183.95.135.*
FROM 183.95.135.*