在 ECMAScript 中检查空字符串时,为什么应该使用 string.length == 0 而不是 string == “” ?

StackOverflow https://stackoverflow.com/questions/1829611

我当前项目中的大多数开发人员都使用一种(对我来说)奇怪的方式来检查 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(零)的第二示例将评估为真。

正确的答案是正确的,并了解类型检查是很重要的。但至于性能,字符串比较会每次都失去。长度的方法,而是通过一个非常非常小的量。如果你不感兴趣,从您的网站的速度剃毫秒,你可能想选择什么是更具可读性/维护你,更重要的是,你的团队。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top