Sha*_*bus 108 javascript syntax
为什么aaa = 1,2,3
工作和设置的值aaa
来1
?
为什么不起作用var bbb = 1,2,3
?
为什么var bbb = (1,2,3)
工作和设置的值bbb
来3
?
p.s*_*w.g 200
这里有很多内容,但基本上,它归结为逗号运算符.
逗号运算符计算其两个操作数(从左到右)并返回第二个操作数的值.
这段代码:
aaa = 1,2,3
Run Code Online (Sandbox Code Playgroud)
相当于:
aaa = 1;
2;
3;
Run Code Online (Sandbox Code Playgroud)
因此aaa
隐式声明并赋值为1.请注意,控制台上的输出是最后一个语句的结果,3.
这段代码:
var bbb = 1,2,3
Run Code Online (Sandbox Code Playgroud)
是语法错误,因为变量声明中的逗号用于在一行中声明多个变量.正如MDN文章指出的那样,
请注意,
var
语句中的逗号不是逗号运算符,因为它在表达式中不存在.相反,它是var
声明中的一个特殊字符,将它们的多个组合成一个.
所以这段代码大致相当于:
var bbb = 1;
var 2;
var 3;
Run Code Online (Sandbox Code Playgroud)
当然,2
它不是有效的标识符,所以它在那时失败了.
这段代码:
var bbb = (1,2,3)
Run Code Online (Sandbox Code Playgroud)
与第一个非常相似,除非因为数值包含在括号中,所以首先计算它们.所以这相当于:
1;
2;
var bbb = 3;
Run Code Online (Sandbox Code Playgroud)
逗号在Javascript中有多种用途.在表达式中:
a = 1, 2, 3;
Run Code Online (Sandbox Code Playgroud)
它是一个简单地返回其右手参数的运算符.但它也是var
声明语法的一部分,它们是:
var var1 [ = val1 ], var2 [ = val2 ], var3 [ = val3 ], ...;
Run Code Online (Sandbox Code Playgroud)
(这[...]
意味着该部分是可选的).您的var
声明在逗号后面缺少变量名,因此它不会解析.你可以得到你想要的效果:
var a = (1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
括号强制将逗号视为运算符而不是变量声明之间的分隔符.
在您的示例中,逗号用于两个上下文中:
var
声明var
语句的语法是:
var varname1 [= value1 [, varname2 [, varname3 ... [, varnameN]]]];
Run Code Online (Sandbox Code Playgroud)
这里,逗号用于分隔变量名称 - 值对.以下操作无效,因为变量名称不能以数字开头(请参阅标识符名称):
var bbb = 1, 2, 3;
// SyntaxError: Unexpected number
Run Code Online (Sandbox Code Playgroud)
逗号运算符计算其两个操作数(从左到右)并返回第二个操作数的值.以下表达式的工作方式如下:
aaa = 1, 2, 3;
Run Code Online (Sandbox Code Playgroud)
aaa = 1, 2
产量2
aaa = 1
首先评估因为=
优先级高于,
2, 3
收益率3var bbb = (1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
(1, 2, 3)
产率3
,如上所述bbb
被赋值3
归档时间: |
|
查看次数: |
4949 次 |
最近记录: |