世俗偏见.String()和+ ''的区别
Typecasting.Difference between String() and + ''
怎么了?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()
处理undefined
和null
的效率更高。Safari 7.0根本不在乎。
在更常见的情况下(例如,将Number
转换为String
),连接空字符串vs.创建新对象vs. .toString()
一直是争论的主题。结果很有趣。
浏览器版本之间的里程可能差异很大。此外,不成熟的优化等等,除了对性能最敏感的环境外,在所有环境中做最清楚的事情。并且要小心意外的类型强制转换,特别是在检查假y值时。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- JavaScript中的函数和对象之间没有区别吗?
- 在ember/handlers中使用value和valueBinding有什么区别
- 在下划线中使用_(obj).map(callback)和_.map(obj,callback)之间的区别
- javascript函数的:和=之间的区别
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- 什么's本地node.js服务器和python简单http服务器之间的区别
- 函数中this和var之间的区别
- “util.inherits”和在NodeJS中扩展原型之间的区别
- Math.min()和Math.max()之间有什么区别?在Javascript中
- angularjs中的ng网格和ui网格有什么区别
- 使用大括号和不使用bracs调用函数的区别
- webpack开发模式和生产构建模式之间有什么区别
- 使用Rhino和ASE执行Javascript的区别
- servlet和代理servlet之间的区别
- Javascript 类型未定义和 void 之间的区别
- 缓存!saveLocations()和addLocation()函数有什么区别
- Javascript-defineProperty和直接在对象上定义函数之间的区别
- 关于承诺/A+规范,术语“当时可”和“承诺”之间有什么区别
- 世俗偏见.String()和+ ''的区别