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