[英]javascript testing .length and .length > 0
我在对象的属性中有一些文本。 我正在测试以查看对象的属性中是否包含要显示的文本; 如果不是,那么我显示“-”而不是空白。 似乎之间没有区别:
if (MyObject.SomeText && MyObject.SomeText.length) { ... }
if (MyObject.SomeText && MyObject.SomeText.length > 0) { ... }
在某些情况下,一种语法比另一种更可取吗?
在某些情况下,一种语法比另一种更可取吗?
仅在MyObject.SomeText
或MyObject.SomeText.length
不是您期望的情况下,例如:
MyObject = {
SomeText = {
length: -42
// or length: true
}
};
他们给出相同的结果。 顺便说一句,如果它的“文本”,那么if (MyObject.SomeText)
就足够了
不,它们是等效的,如果长度等于0,则其值为false
。
(这是可能的,因为JS不是强类型的,在强类型的语言中,长度不能转换为布尔值)。
在javascript中,数字仅在为0时才被视为“假”。任何其他值均为“ truthy”。 因此,语句number != 0
(比较,而不是标识)和!number
完全相等。
如果length
不是正数,则这两个语句唯一的区别是。
一样的:
Boolean(MyObject.SomeText.length)
MyObject.SomeText.length
!= 0则返回true
MyObject.SomeText.length
== 0,则返回false
和
Boolean(MyObject.SomeText.length>0)
MyObject.SomeText.length
> 0返回true
MyObject.SomeText.length
<= 0,则返回false
但是MyObject.SomeText.length
只能为0
或正整数。 所以
MyObject.SomeText.length
== 0,
Boolean(MyObject.SomeText.length)
返回false
因为MyObject.SomeText.length
== 0 Boolean(MyObject.SomeText.length>0)
返回false
因为MyObject.SomeText.length
<= 0 MyObject.SomeText.length
> 0,
Boolean(MyObject.SomeText.length)
返回true
因为MyObject.SomeText.length
!= 0 Boolean(MyObject.SomeText.length>0)
返回true
因为MyObject.SomeText.length
> 0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.