【问题标题】:Javascript - primitive string implicit conversion to objectJavascript - 原始字符串隐式转换为对象
【发布时间】: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.lengthString(word).length 快得多。似乎隐式转换与String(word) 完全不同,要快得多。我找不到有关此隐式转换如何工作的任何信息,但了解一些优化问题可能会有所帮助。

【问题讨论】:

  • 正如引用所说,您正在创建一个 String 对象。获取它的长度比从第一个值创建另一个字符串对象,然后获取它的长度要快。性能测试不一样。
  • 在第一种情况下,我们是否以某种方式基于原始对象创建 String 对象?当然我们也像第二种情况那样做。
  • 它们是两个不同的东西。 String("Hello").lengthString(String("Hello")).length

标签: javascript string implicit-conversion


【解决方案1】:

原因可能是解析的时间以及内部 JS 字符串对象(实际上是 C++)的工作速度比创建额外的接口来与高 JS 级别的字符串交互的速度更快...... 所以一切都与优化有关 有一篇关于它的好文章 (https://dev.to/promhize/what-you-need-to-know-about-javascripts-implicit-coercion-e23)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 2011-07-14
    • 2015-10-10
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    相关资源
    最近更新 更多