17

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

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

我通常会写这个:

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

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

我问过的人似乎都无法解释版本 1 的优点。我猜在过去的某个时候,有人告诉大家这是这样做的方法,但现在那个人离开了,没有人记得为什么要这样做方式。

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

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

谢谢。

4

3 回答 3

33

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

theString == ""但是在 ECMAScript 中还有另一个需要避免的原因:0 == ""计算结果为true,false == ""0.0 == ""...

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

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

也可以看看:

于 2009-12-01T23:18:14.067 回答
2

问题是如果theString设置为0(零),您的第二个示例将评估为真。

于 2009-12-01T23:15:48.910 回答
1

The correct answer is correct and it's important to understand type checking. But as far as performance, a string compare is going to lose to .length method every time, but by a very very small amount. If you aren't interested in shaving milliseconds from your site speed, you may want to choose what is more readable / maintainable to you and , more importantly, your team.

于 2015-09-14T15:16:39.350 回答