【发布时间】:2019-12-12 18:20:09
【问题描述】:
我会参考Mozilla's关于字符串对象的文档。
JavaScript 自动将原语转换为 String 对象,因此可以将 String 对象方法用于原语字符串。在原始字符串上调用方法或发生属性查找的上下文中,JavaScript 将自动包装字符串原始并调用方法或执行属性查找。
这种情况的一个很好的例子是访问长度属性:
let word = "Hello";
word.length;
我了解到在这种情况下会发生什么:
let word = "Hello";
String(word).length;
但是在尝试了一些benchmarks 之后,我很清楚word.length 比String(word).length 快得多。似乎隐式转换与String(word) 完全不同,要快得多。我找不到有关此隐式转换如何工作的任何信息,但了解一些优化问题可能会有所帮助。
【问题讨论】:
-
正如引用所说,您正在创建一个 String 对象。获取它的长度比从第一个值创建另一个字符串对象,然后获取它的长度要快。性能测试不一样。
-
在第一种情况下,我们是否以某种方式基于原始对象创建 String 对象?当然我们也像第二种情况那样做。
-
它们是两个不同的东西。
String("Hello").length和String(String("Hello")).length
标签: javascript string implicit-conversion