取自 MDN
字符串文字(由双引号或单引号表示)和字符串 从非构造函数上下文中的 String 调用返回(即,没有 (使用 new 关键字)是基元字符串 将原语转换为 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快吗。