什么是var=var&&&引用*&引用;Javascript中的平均值
我正试图通过阅读来找出一些模糊代码,我做得很好,直到a发现:什么是var=var&&&引用*&引用;Javascript中的平均值,javascript,Javascript,我正试图通过阅读来找出一些模糊代码,我做得很好,直到a发现: a = a && "*" 现在我对Javascript还是一个新手,这些不常见的Javascript代码对我来说还是很陌生的,这是我第一次遇到它们 有人知道这是干什么的吗?我在javascript代码测试仪中尝试了它,但它刚刚返回*,所以我不知道 另外,如果有人知道我在哪里可以找到这些不常见的代码行的作用,那将非常有帮助。它们都被缩短了,类似这样的东西 a = a || b (我知道那是干什么的) 但是,如果这种j
a = a && "*"
现在我对Javascript还是一个新手,这些不常见的Javascript代码对我来说还是很陌生的,这是我第一次遇到它们 有人知道这是干什么的吗?我在javascript代码测试仪中尝试了它,但它刚刚返回*,所以我不知道 另外,如果有人知道我在哪里可以找到这些不常见的代码行的作用,那将非常有帮助。它们都被缩短了,类似这样的东西
a = a || b
(我知道那是干什么的)
但是,如果这种javascript有什么名称或者我可以查看的参考资料,那将非常有用,我已经搜索了谷歌好几个小时了
谢谢如果
a
是真实的,它会将“*”
分配给a
如果a
是falsy,它将保持不变
&&
具有短路语义:复合表达式(e1)&(e2)
-其中e1
和e2
是任意表达式,其本身计算结果为
如果e1
在布尔上下文中计算为false-e1
为未计算e2
ife2
在布尔上下文中计算为truee1
e1
或e2
以及整个表达式(e1)和&(e2)
需要计算为true或false
在布尔上下文中,以下值的计算结果为false
:
- 空的
- 未定义
- ±0
- 楠
- 假的
- 空字符串
true
上述值被简明扼要地称为“falsy”,其他值则被称为“truthy”
应用于您的示例:a=a&&“*”
根据上述和&
的短路评估规则,如果a
为falsy,则表达式评估为a
,然后将其依次分配给a
,即该语句简化为a=a
但是,如果
a
为真,则右侧的表达式计算结果为*
,该表达式又被分配给a
至于你的第二个问题:
(e1)| |(e2)
具有类似的语义:
整个表达式的计算结果为:
如果e1
是真实的e1
如果e2
是错误的e1
1和的副本。它被称为短路评估(short-circuit evaluation),阅读更多内容可以写成(i)
if(a){a=“*”;}
(ii)if(!a){a=b;}
@SalmanA是的,这是正确的。“现在我对Javascript还是相当陌生的。”。作为JavaScript新手,OP可能需要更好的解释来理解这个概念。