在JavaScript中,您可能已经知道
'' + null = "null"
和'' + undefined = "undefined"
(在我可以测试的大多数浏览器中:Firefox,Chrome和IE)。 我想知道这种奇怪现象的起源是什么(Brendan Eich脑子里到底想了什么?!),是否有计划在未来的ECMA版本中进行更改。确实非常令人沮丧,需要使用'sthg' + (var || '')
来连接包含变量的字符串,而使用第三方框架如Underscore等则犹如对着果冻钉钉子。
编辑:
为满足 StackOverflow 的要求并澄清我的问题,这是一个三重问题:
- JS 将
null
或undefined
转换为它们在String
拼接时的字符串值背后的历史是什么? - 未来的 ECMAScript 版本中是否有机会改变这种行为?
- 最漂亮的方法是将
String
与潜在的null
或undefined
对象连接起来,而不会遇到此问题(在字符串中获得一些"undefined"
或"null"
)? 主观标准下的“漂亮”意味着:简短,干净,有效。 不用说'' + (obj ? obj : '')
真的不太漂亮...
paste0("a", NULL) == "a"
。 - MicheletoString
或valueOf
方法。我想,在您希望它们显示为空字符串的情况下,您希望它们显示为null
或undefined
的情况同样多。幸运的是,我几乎从未遇到过这个问题,因为我经常使用 join 连接字符串(它解决了其他问题,如在使用三元(?
)表达式时进行连接)。 - jongo45