Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是var=var&&&引用*&引用;Javascript中的平均值_Javascript - Fatal编程技术网

什么是var=var&&&引用*&引用;Javascript中的平均值

什么是var=var&&&引用*&引用;Javascript中的平均值,javascript,Javascript,我正试图通过阅读来找出一些模糊代码,我做得很好,直到a发现: a = a && "*" 现在我对Javascript还是一个新手,这些不常见的Javascript代码对我来说还是很陌生的,这是我第一次遇到它们 有人知道这是干什么的吗?我在javascript代码测试仪中尝试了它,但它刚刚返回*,所以我不知道 另外,如果有人知道我在哪里可以找到这些不常见的代码行的作用,那将非常有帮助。它们都被缩短了,类似这样的东西 a = a || b (我知道那是干什么的) 但是,如果这种j

我正试图通过阅读来找出一些模糊代码,我做得很好,直到a发现:

a = a && "*"

现在我对Javascript还是一个新手,这些不常见的Javascript代码对我来说还是很陌生的,这是我第一次遇到它们

有人知道这是干什么的吗?我在javascript代码测试仪中尝试了它,但它刚刚返回*,所以我不知道

另外,如果有人知道我在哪里可以找到这些不常见的代码行的作用,那将非常有帮助。它们都被缩短了,类似这样的东西

a = a || b
(我知道那是干什么的)

但是,如果这种javascript有什么名称或者我可以查看的参考资料,那将非常有用,我已经搜索了谷歌好几个小时了


谢谢如果
a
是真实的,它会将
“*”
分配给
a

如果
a
是falsy,它将保持不变


&&
具有短路语义:复合表达式
(e1)&(e2)
-其中
e1
e2
是任意表达式,其本身计算结果为

  • e1
    如果
    e1
    在布尔上下文中计算为false-
    e2
    未计算
  • e2
    if
    e1
    在布尔上下文中计算为true
这并不意味着
e1
e2
以及整个表达式
(e1)和&(e2)
需要计算为true或false

在布尔上下文中,以下值的计算结果为
false

  • 空的
  • 未定义
  • ±0
  • 假的
  • 空字符串
所有1个其他值均被视为
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可能需要更好的解释来理解这个概念。