我将参考Mozilla关于String 对象的文档。
JavaScript 会自动将基元转换为 String 对象,以便对基元字符串使用 String 对象方法。在对基元字符串调用方法或发生属性查找的上下文中,JavaScript 将自动包装字符串原语并调用该方法或执行属性查找。
这种情况的很好的例子是访问长度属性:
let word = "Hello";
word.length;
我明白在这种情况下发生的事情是:
let word = "Hello";
String(word).length;
但是在尝试了一些基准测试之后,我很清楚word.length
比String(word).length
快得多。似乎隐式转换与String(word)
完全不同,要快得多。我找不到有关此隐式转换如何工作的任何信息,但是了解某些优化问题可能会有所帮助。
其原因可能是解析时间以及内部 JS 字符串对象(实际上是C++(工作得更快,然后创建额外的接口与高 JS 级别的字符串交互...... 所以一切都与优化有关 有一篇关于它的好文章(https://dev.to/promhize/what-you-need-to-know-about-javascripts-implicit-coercion-e23(。