Yat*_*wal 21 javascript variable-assignment assignment-operator assign iterable-unpacking
可能重复:
Javascript语法:逗号是什么意思?
我在阅读本文时遇到了代码(执行Ctrl+ F搜索Andre Breton):
//function returning array of `umbrella` fibonacci numbers
function Colette(umbrella) {
var staircase = 0, galleons = 0, brigantines = 1, armada = [galleons, brigantines], bassoon;
Array.prototype.embrace = [].push;
while(2 + staircase++ < umbrella) {
bassoon = galleons + brigantines;
armada.embrace(brigantines = (galleons = brigantines, bassoon));
}
return armada;
}
Run Code Online (Sandbox Code Playgroud)
什么是x = (y = x, z)结构是什么意思?或者更具体地说,是什么y = x, z意思?我称之为逗号分配,因为它看起来像赋值并且有逗号.
在Python中,它意味着元组解包(或在这种情况下打包).这是同样的情况吗?
mbi*_*tte 19
这是逗号运算符.
逗号运算符计算其两个操作数(从左到右)并返回第二个操作数的值.
评估a,b,c,...,n时的结果值将始终是最右侧表达式的值,但仍会评估链中的所有表达式(从左到右).
因此,在您的情况下,仍将评估分配,但最终值将是bassoon.
结果:
galleons = brigantines
brigantines = bassoon
armada.embrace(basson)
Run Code Online (Sandbox Code Playgroud)
var语法允许多个赋值,因此当您看到以下内容时,您将使用一个var语句声明多个变量.
var a, b, c;
Run Code Online (Sandbox Code Playgroud)
请注意,这个语法是不是在逗号操作符.
该,可被用作逗号操作符.它只是评估一系列表达式.因此,当您看到以下语法时,您将看到正在计算的一系列表达式,以及返回的最后一个表达式的返回值.
x = (y = x, z)
Run Code Online (Sandbox Code Playgroud)
在parens中,x被分配y,然后z被评估并从()分配返回x.
我建议这种语法不清楚,并没什么好处.
逗号操作数计算其所有操作数并返回最后一个操作数.如果我们使用的话,这种情况没有区别
x = (y = x, z);
Run Code Online (Sandbox Code Playgroud)
要么
y = x;
x = z;
Run Code Online (Sandbox Code Playgroud)
它可以带走那行代码.
| 归档时间: |
|
| 查看次数: |
7635 次 |
| 最近记录: |