在ECMAScript中检查空字符串时,为什么要在string ==""上使用string.length == 0?

Tho*_*ler 12 javascript string-comparison ecmascript-4

我当前项目中的大多数开发人员使用(对我而言)奇怪的方法来检查ECMAScript中的空字符串:

if (theString.length == 0)
    // string is empty
Run Code Online (Sandbox Code Playgroud)

我通常会这样写:

if (theString == "")
    // string is empty
Run Code Online (Sandbox Code Playgroud)

后一版本对我来说似乎更具可读性和自然性.

我没有问过任何人似乎能够解释版本1的优点.我想在过去的某个时候有人告诉大家这是做到这一点的方法,但现在那个人离开了,没有人记得为什么要这样做办法.

我想知道为什么我应该在第二个版本中选择第一个版本?重要的是,一个版本比另一个版本好吗?由于某种原因,一个版本更安全还是更快?

(我们实际上是在符合ECMAScript Edition 4的Siebel eScript中执行此操作)

谢谢.

Sho*_*og9 29

我实际上更喜欢使用多种语言的技术,因为有时很难区分空字符串文字""和其他几个字符串(" ",'"').

但是theString == ""在ECMAScript中还有另一个要避免的原因:0 == ""评估true,false == ""以及0.0 == ""......

...所以,除非你知道theString实际上是一个字符串,你可能最终使用弱对比致使自己的问题.幸运的是,你可以通过明智地使用严格的equal(===)运算符来避免这种情况:

if ( theString === "" )
   // string is a string and is empty
Run Code Online (Sandbox Code Playgroud)

也可以看看: