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

时间:2009-12-01 23:12:02

标签: javascript string-comparison ecmascript-4

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

if (theString.length == 0)
    // string is empty

我通常会这样写:

if (theString == "")
    // string is empty

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

我提出的任何人似乎都无法解释版本1的优点。我想在过去的某个时候有人告诉大家这是做这件事的方法,但是现在那个人离开了,没有人记得为什么它应该这样做。

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

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

感谢。

3 个答案:

答案 0 :(得分:29)

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

但是还有另一个原因可以避免ECMAScript中的theString == ""0 == ""评估为truefalse == ""0.0 == "" ......

...所以除非你知道 theString 实际上是一个字符串,否则你最终可能会因为使用弱比较而给自己造成问题。幸运的是,您可以通过明智地使用严格相等(===)运算符来避免这种情况:

if ( theString === "" )
   // string is a string and is empty

另见:

答案 1 :(得分:1)

问题在于,如果theString设置为0(零),则第二个示例将评估为true。

答案 2 :(得分:1)

正确的答案是正确的,理解类型检查很重要。但就性能而言,字符串比较每次都会失去.length方法,但只是非常少量。如果您对从网站速度中缩短毫秒数毫无兴趣,您可能希望选择对您,更重要的是您的团队更具可读性/可维护性。