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']
是否在需要的范围内:)