世俗偏见.String()和+ ''的区别

Typecasting.Difference between String() and + ''

本文关键字:区别 偏见 String      更新时间:2023-09-26

怎么了?2种方法之间:

null+'';
"null"
undefined + ''
"undefined"
NaN + ''
"NaN"
String(undefined)
"undefined"
String(null)
"null"

可能有需要记住的特性?也许他们是完全相同的和性能?

在所有示例中,第二种方法是使用String字面值创建字符串。在以下情况下,

null + ''
undefined + ''
NaN + ''

由于与字符串连接,前面的对象也被转换为相应的string表示形式。在下列表达式中,

String(undefined)
String(null)

String构造函数用于构造对象的String表示。在内部,String(undefined)undefined + ''将使用相同的函数转换为字符串表示。

我想说,使用单个字符串文字可能比其他方法有一点性能优势,因为其他方法将在运行时确定字符串值,但JavaScript实现可以在编译时自己理解字符串文字。

它们都将返回相同的值,一个假y值的字符串表示。

但是,性能可能会发生根本变化。

http://jsperf.com/converting-null-undefined-nan-to-string

例如,最新版本的Chrome和Firefox(测试时分别为35.0和28.0)处理NaN + ''的效率远远高于String(NaN),而String()处理undefinednull的效率更高。Safari 7.0根本不在乎。

在更常见的情况下(例如,将Number转换为String),连接空字符串vs.创建新对象vs. .toString()一直是争论的主题。结果很有趣。

http://jsperf.com/string-vs-tostring-vs-empty-string-value/2

浏览器版本之间的里程可能差异很大。此外,不成熟的优化等等,除了对性能最敏感的环境外,在所有环境中做最清楚的事情。并且要小心意外的类型强制转换,特别是在检查假y值时。