是";从右向左运算符关联性“;与javaScript中赋值运算符中的求值顺序相同

是";从右向左运算符关联性“;与javaScript中赋值运算符中的求值顺序相同,javascript,operator-precedence,assignment-operator,associativity,order-of-execution,Javascript,Operator Precedence,Assignment Operator,Associativity,Order Of Execution,例如,我需要知道操作符的关联性是否与赋值操作符和JavaScript中其他操作符的求值顺序相同 在上面的代码中,我需要知道赋值表达式x=10是从“从右到左”或“从左到右”执行的,因为赋值运算符的运算符关联性是“从右到左”,我有点担心像这样的正常赋值表达式如何x=10被执行。它是从“从右到左”还是从“从左到右”执行的,在下面的代码中,您可以看到赋值表达式是从右到左执行的 答案可以在MDN的页面上找到(我的重点): 关联性决定了具有相同优先级的运算符的使用方式 解析。例如,考虑一个表达式: a

例如,我需要知道操作符的关联性是否与赋值操作符和JavaScript中其他操作符的求值顺序相同


在上面的代码中,我需要知道赋值表达式
x=10
是从“从右到左”或“从左到右”执行的,因为赋值运算符的运算符关联性是“从右到左”,我有点担心像这样的正常赋值表达式如何
x=10被执行。它是从“从右到左”还是从“从左到右”执行的,在下面的代码中,您可以看到赋值表达式是从右到左执行的



答案可以在MDN的页面上找到(我的重点):

关联性决定了具有相同优先级的运算符的使用方式 解析。例如,考虑一个表达式:

a OP b OP c
左关联性(从左到右)表示它被处理为
(a OP b)OP c
,而右关联性(从右到左)表示它是 解释为
a OP(b OP c)

只有当有多个具有相同优先级的运算符时,关联性才会起作用。如果有多个赋值运算符,则会从右向左求值,但每个赋值运算符仍将右操作数赋值给左名称

在代码段中:

y = z = 10;
这相当于:

y = (z = 10);
由于赋值运算符的计算结果是赋值的值(10),因此得到
y=10z
后的code>


如果只有一个运算符,则关联性不适用。在赋值运算符中,右操作数被赋值给左操作数,即句号。它们的求值顺序由上面MDN页面中列出的运算符优先级决定。

如果JS中的“从左到右”赋值有效,则
10=x
应能完美地工作。JavaScript中的赋值运算符是右关联的,无论表达式中包含多少操作:
a=b=10
a=10都是右关联的。您可以查看操作表和MDN上的每个运算符的关联性:@HunterMcMillen您好,您的意思是正常的赋值表达式也是从“右到左”执行的@AlexMichailidis我认为赋值表达式是从“左到右”执行的在我们的情况下,因为首先它必须检查左操作数,这通常是一个变量,但在我们的情况下,它是一个数字。数字“10”,因为赋值运算符是从左到右执行的,所以只有您的代码给出了一个错误。等号的右侧被赋值到左侧。停止过度思考itAlso,以强化Klaycon刚才所说的:
a=1+3*4*4
仍将首先执行乘法
*
操作(在相邻的位置从左到右或从右到左),因为此运算符的优先级高于
+
。这符合代数的一般规则。如果
x=y=10,结果将是
49
@Klaycon井是从右到左执行的。我能知道这是如何执行的吗
x=10从右向左执行,如
x=y=10?@Kevin“从右向左执行”不明确。赋值运算符
=
首先计算右操作数,然后将其值赋给左操作数
x=10
首先计算
10
,然后将其分配给
x
<代码>x=y=10首先被解析为
x=(y=10)
,然后
y=10
首先被求值,然后将
x
赋值给
y=10
求值的结果。@Klaycon那么您如何证明赋值运算符是从右到右执行的呢left@Kevin你能提供更多的细节来说明为什么你有这个问题,或者为什么你需要证明它吗?您是否有与执行顺序相关的问题?看起来您可能有XY问题,也就是说,其他一些问题被误诊为执行顺序问题
y = z = 10;
y = (z = 10);