在 ECMAScript 中检查空字符串时,为什么应该使用 string.length == 0 而不是 string == “” ?
-
11-09-2019 - |
题
我当前项目中的大多数开发人员都使用一种(对我来说)奇怪的方式来检查 ECMAScript 中的空字符串:
if (theString.length == 0)
// string is empty
我通常会这样写:
if (theString == "")
// string is empty
后一个版本对我来说似乎更具可读性和自然性。
我问过的人似乎都无法解释版本 1 的优点。我想在过去的某个时候,有人告诉每个人这是这样做的方法,但现在那个人离开了,没有人记得为什么应该这样做。
我想知道我是否有理由选择第一个版本而不是第二个版本?一个版本比另一个版本好吗?这很重要吗?由于某种原因,某个版本是否更安全或更快速?
(我们实际上在 Siebel eScript 中执行此操作,它符合 ECMAScript Edition 4)
谢谢。
解决方案
实际上,我更喜欢多种语言中的这种技术,因为有时很难区分空字符串文字 ""
和其他几个字符串(" "
, '"'
).
但还有另一个原因需要避免 theString == ""
在 ECMA 脚本中: 0 == ""
评估为 true
, ,就像 false == ""
和 0.0 == ""
...
...所以除非你 知道 那 theString
是 实际上是一个字符串, ,您最终可能会因为使用弱比较而给自己带来问题。幸运的是,您可以通过明智地使用严格等于来避免这种情况(===
) 操作员:
if ( theString === "" )
// string is a string and is empty
也可以看看:
其他提示
的问题是,如果theString
设置为0
(零)的第二示例将评估为真。
正确的答案是正确的,并了解类型检查是很重要的。但至于性能,字符串比较会每次都失去。长度的方法,而是通过一个非常非常小的量。如果你不感兴趣,从您的网站的速度剃毫秒,你可能想选择什么是更具可读性/维护你,更重要的是,你的团队。
不隶属于 StackOverflow