Javascript 对这些变量赋值的工作方式感到困惑吗?

Javascript 对这些变量赋值的工作方式感到困惑吗?,javascript,Javascript,试图找出结果背后的工作逻辑。我不能 请有人解释一下Javascript是如何处理这4种情况的输出的,以及背后的原因 我认为第一和第二是类似的情况 谢谢 var num=(1,2,3);//num=3(返回最后一个数字,未生成错误) console.log(num) y=(1,2,3);//y=3(返回的最后一个数字,未生成错误) 控制台日志(y) z=1,2,3;//z=1(返回第一个数字,未生成错误) console.log(z) //取消注释以下内容以运行:(给出一个错误) //var m

试图找出结果背后的工作逻辑。我不能

请有人解释一下Javascript是如何处理这4种情况的输出的,以及背后的原因

我认为第一和第二是类似的情况

谢谢

var num=(1,2,3);//num=3(返回最后一个数字,未生成错误)
console.log(num)
y=(1,2,3);//y=3(返回的最后一个数字,未生成错误)
控制台日志(y)
z=1,2,3;//z=1(返回第一个数字,未生成错误)
console.log(z)
//取消注释以下内容以运行:(给出一个错误)
//var m=1,2,3;//错误:
var num=(1,2,3)中的意外数字
num
正被设置为集合中最终表达式的值。计算多个表达式并返回最后一个值就像一个速记

y=(1,2,3)也是一样的

z=1,2,3
是三个表达式,
z=1
2
3
z
设置为1,但如果记录该行的输出,则会得到3


var m=1,2,3
是一个语法错误,因为在这种情况下,解释器需要一个单独的var模式,如
var m=1,n=2,o=3

您的前三个代码片段基本相同。它们演示了逗号运算符的用法

a,b
首先计算
a
并丢弃结果,然后计算
b
并返回结果。它是左关联的,因此
a,b,c
(a,b),c
相同

注意:

constfoo=()=>{console.log(“foo”);返回23;};
constbar=()=>{console.log(“bar”);返回42;};
constqux=()=>{console.log(“qux”);返回99;};
log((foo(),bar());
//福
//酒吧
// 42
log((foo(),bar(),qux());
//福
//酒吧
//库克斯

//99
var m=1,2,3;
引发错误,因为它与
var
之后逗号运算符的预期用法冲突”-不,这是一个语法错误,因为它不是此处的逗号运算符。感谢您的更正。我修改了措辞,以反映单个var模式中的逗号不是逗号运算符。