摘自MDN
字符串文字(由双引号或单引号表示)和从非构造函数上下文中的 String 调用返回的字符串(即,不使用 new 关键字)是原始字符串。JavaScript 自动将原始类型转换为 String 对象,因此可以将 String 对象方法用于原始字符串。在要在原始字符串上调用方法或发生属性查找的上下文中,JavaScript 将自动包装字符串原始并调用方法或执行属性查找。
所以,我认为(逻辑上)对字符串基元的操作(方法调用)应该比对字符串对象的操作慢,因为method
在应用于字符串之前,任何字符串基元都被转换为字符串对象(额外的工作)。
但是在这个测试用例中,结果相反。所述码块1的运行速度比较快码块-2 ,两者的码块在下面给出:
代码块 1 :
var s = '0123456789';
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
代码块 2 :
var s = new String('0123456789');
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
结果因浏览器而异,但代码块 1总是更快。谁能解释一下,为什么代码块 1比代码块 2快。