Javascript 什么是;count=(count&;count.length | 0)&引用;做

Javascript 什么是;count=(count&;count.length | 0)&引用;做,javascript,Javascript,下面是一个简单的片段: pass="Hello"; count=pass.match(/[A-Z]/g); count=(count && count.length || 0); alert(count); //1 我只是不知道第三行是如何工作的,count=(count&&count.length | 0)。背后的逻辑是什么?谢谢 基本相当于 count = (count)? count.length : 0; 或者更明确地说 if (count) count = c

下面是一个简单的片段:

pass="Hello";
count=pass.match(/[A-Z]/g);
count=(count && count.length || 0);
alert(count); //1 

我只是不知道第三行是如何工作的,
count=(count&&count.length | 0)。背后的逻辑是什么?谢谢

基本相当于

count = (count)? count.length : 0;
或者更明确地说

if (count)
  count = count.length;
else
  count = 0;
它的缩写是:

if (count) {
  count = count.length;
} else {
  count = 0;
}
如果你想用英语写,它的意思是

如果
count
为真,则获取
count.length
,如果
count.length
为假,则获取
0
。如果
count
为falsy,则获取
0
。将计数设置为我们得到的值

你可以这样认为自己是真实的(而法尔西恰恰相反)

所以基本上,
a=(a&&b|c)
是的缩写

if (a)
  a=b
else
  a=c

我同意了,因为我已经用a测试了,其中a在{-1,0,null,1}。一开始让我感到困惑的是,我认为逻辑运算总是会返回真/假或1/0值。但现在我学到了一些新东西。谢谢大家

条件if true(1)else false(0)如果有一个count变量,并且它有长度,则使用它,否则使用zero或
count=(count | |[])。length
)@罗伯特克莱普这不是一场混淆比赛Dcount=(count&&count.length);意思是?@SHIN
如果(count){count=count.length}
你确定吗?如果(count){count=count.length}或如果(count){count=count.length;}否则{count=0;},则为该值itslef@SHIN实际上,
if(count){count=count.length}else{count=count}
String.match()
返回匹配数组,或者
null
在没有任何匹配的情况下)得到了它。但是count=(count&&count.length | 0);和count=(count&&count.length);这可能是有史以来最有用的函数;p@Drax如果读者以前没有遇到过truthy和falsy这两个术语,那么,
isTruthy
的功能就是传达这个概念,而不是你期望在实际代码中看到的东西。明白这一点,只是开玩笑:)
if (a)
  a=b
else
  a=c