繁体   English   中英

javascript测试.length和.length> 0

[英]javascript testing .length and .length > 0

我在对象的属性中有一些文本。 我正在测试以查看对象的属性中是否包含要显示的文本; 如果不是,那么我显示“-”而不是空白。 似乎之间没有区别:

if (MyObject.SomeText && MyObject.SomeText.length) { ... }

if (MyObject.SomeText && MyObject.SomeText.length > 0) { ... }

在某些情况下,一种语法比另一种更可取吗?

在某些情况下,一种语法比另一种更可取吗?

仅在MyObject.SomeTextMyObject.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM