Javascript 如果值为,则将值求值为true

Javascript 如果值为,则将值求值为true,javascript,Javascript,类似于if(value)的检查在值为not时计算为true: 空的 未定义 楠 空字符串(“”) 0 假的 我想要 要反转此检查:如果值为,则计算为真: 空的 未定义 楠 空字符串(“”) 0 假的 要将它(或)与另一个检查结合起来,我的变量是否以给定字符开头,如if(a.indexOf(“b”)==0) 我这样试过: if (!(a) || a.indexOf("b") === 0){ ... } 但是那里有点不对劲。进行此类检查的最佳方式是什么 PS:不知道为什么,但是这个(和类似

类似于
if(value)
的检查在值为not时计算为true

  • 空的
  • 未定义
  • 空字符串(“”)
  • 0
  • 假的
我想要

  • 要反转此检查:如果值,则计算为

    • 空的
    • 未定义
    • 空字符串(“”)
    • 0
    • 假的
  • 要将它(或)与另一个检查结合起来,我的变量是否以给定字符开头,如
    if(a.indexOf(“b”)==0)

  • 我这样试过:

    if (!(a) || a.indexOf("b") === 0){
    ...
    }
    
    但是那里有点不对劲。进行此类检查的最佳方式是什么

    PS:不知道为什么,但是这个(和类似的)结构,比如
    a[0]=='b'
    对我不起作用-他们不理解这个案例(用控制台试过了。唯一有效的是
    a.indexOf(“b”)==0

    PPS:同样,不知道为什么,但括号阻止了预期的工作。这一个有效:

     if (! a || a.indexOf("b") === 0){
        ...
        }
    

    阅读:如果
    a
    不是真的,或者
    a
    的第一个字符是
    'b'

    if (!a || a[0] === "b") {
        // ...
    }
    

    您错过了对“a”类型的检查:

    if (!a || (typeof a === 'string' || Array.isArray(a)) && a[0] ==='b'){
        ...
    }
    

    这应该满足您的要求:

      // with check ['b'] => true
      if (!a || `${a}`[0] ==='b'){
          // triggers when a is
          // null, undefined, NaN, "", 0, false, 'b'
      }
    
      // with check ['b'] => false
      if (!a || typeof a === 'string' && a[0] ==='b'){
          // triggers when a is
          // null, undefined, NaN, "", 0, false, 'b'
      }
    
    在此处检查其评估方式:

    //dosnt过滤器['b']
    功能检查a(a){
    log('type a',a,(!a | `${a}`[0]='b');
    }
    //被认为是真实的
    checkA(空)
    checkA(未定义)
    查卡(南)
    勾选A(“”)
    检查A(0)
    支票A(假)
    支票A('b')
    勾选A(['b'])
    //被认为是假的
    支票('a')
    支票A('c')
    checkA([]))
    checkA({})
    支票A(123)
    //也可以是过滤器['b']
    功能检查B(a){
    log('type b',a,(!a | | typeof a=='string'&&a[0]=='b');
    }
    //被认为是真实的
    检查B(空)
    检查B(未定义)
    检查B(南)
    勾选B(“”)
    检查B(0)
    检查B(错误)
    检查b('b')
    //被认为是假的
    检查b(['b']))
    支票B('a')
    检查B('c')
    检查B([])
    checkB({})
    
    勾选B(123)
    这里有什么错?您对
    !a
    的解释是正确的,您可以将其与
    |
    组合。但是,请记住,a或B的否定是(不是a)和(不是B)你有一些
    a
    的例子和想要的结果吗?根据你所需要的解释,你的尝试看起来是正确的。如果
    a
    不是错的,那么回头检查
    a.indexOf('b')是否正确===0
    @AdamCopley-不知道为什么,但事情在括号里。你的第一个变体,从删除的帖子中,就是这样做的。@evgeny你在PPS中提到的代码(
    !a | a.indexOf(“b”)==0
    ):(1)
    a=1234
    将中断(2)
    a=['b']
    将是真的。记住这一点;)你能为这个方法提供一些参考吗?
    booleanb=(n==0)| |(m/n>2)
    即使n为零,这条线也不会导致被零除,因为总是先计算左手边。如果n为零,则左手边为真,无需计算右手边。从数学上讲,这是有意义的,因为从某种意义上讲,m/0是无限的,大于2。”(来源)-我怀疑javascript是否以不同的方式工作。我不会说这是漏掉的支票。。。但它更可取。参考method@DavidRenne-我理解你的意思,这很有意义,但必须说这里没有被零除的情况(indexOf('b')返回字符串或数组a中第一次出现的'b'的索引)。这就是为什么过了一会儿,我在字符串或数组上添加了类型检查,您已经以一种我不能再抱怨的方式进行了编辑。。。现在我们仍然需要知道
    ['b']
    是否被认为是
    真的
    假的
    -您似乎在猜测
    ['b']
    是否在需要的范围内:)