javascript测试.length和.length>;0

javascript测试.length和.length>;0,javascript,Javascript,我在对象的属性中有一些文本。我正在测试对象的属性是否包含要显示的文本;如果没有,则显示“-”,而不是一个空白。看起来这两者之间并没有区别: if (MyObject.SomeText && MyObject.SomeText.length) { ... } if (MyObject.SomeText && MyObject.SomeText.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
    }
};

不,它们是等效的,如果长度等于0,则其值为
false


(这是可能的,因为JS不是强类型的,在强类型语言中,长度不能转换为布尔值)。

它们给出了相同的结果。顺便说一句,如果它的“文本”,那么
如果(MyObject.SomeText)
在javascript中足够了

,那么数字只有在为0时才被认为是“错误的”。任何其他价值观都是“真实的”。因此,语句
number!=0(比较,而不是标识)和
!编号
完全相等

两个语句唯一不同的地方是如果
length
不是正数。

是一样的:

Boolean(MyObject.SomeText.length)
  • 如果
    MyObject.SomeText.length
    ,则返回
    true
    !=0
  • 如果
    MyObject.SomeText.length
    ==0,则返回
    false

  • 返回
    true
    如果
    MyObject.SomeText.length
    >0
  • 返回
    false
    如果
    MyObject.SomeText.length
    0)
返回
false
,因为
MyObject.SomeText.length
0,
  • Boolean(MyObject.SomeText.length)
    返回
    true
    ,因为
    MyObject.SomeText.length
    !=0
  • Boolean(MyObject.SomeText.length>0)
    返回
    true
    ,因为
    MyObject.SomeText.length
    >0

只要
.length
的值在
[0]范围内,∞)
,应该没问题。你为什么又问了一个非常类似的问题?他又问了一个问题:关于长度,你对长度着迷吗?有什么错吗?在调用之前,我首先测试属性中是否有文本。长度。我应该如何重写我的测试?如果有文本,那么一定有。长度,所以不需要检查同样,要清楚:<代码> '/COD>(空字符串)被认为是错误的,如NULL、UnDebug、0和FALSE等。对于这个新手问题,您必须是新的JavaScript。因为您有如此巨大的声誉。在JavaScript,每一个VAR都非常非常灵活,基本上没有类型,您给它什么值,它就变成了类型。“变成bool,值为false。我不喜欢JavaScript,有一段代码后会出现太多错误:(事实上,我正在构建一个非常依赖javascript的单页Web应用程序:到目前为止,它大约有13K的javascript。但我是一个刚刚开始从事科技的商业人士:2年前,我不知道类、json或SQL是关于什么的。所以我开始阅读5000页的计算机书籍,学习编程并创办一家公司。看看这个:我问长度的原因是我想确定我做得对。如果技术人员能够学习销售、金融和营销,就会有更多的初创企业诞生;反过来也是如此。不,数字!=0不等于!数字-它是布尔值的相反。
Boolean(MyObject.SomeText.length>0)