我需要收到反馈并解释我遇到的以下测验:
x = 10, y = 20
,最后是x = y
如果我们将x
和y
视为变量而=
运算符代表'分配'。 x
和y
的价值是什么?
在对变量和值的了解做了一些基本推理之后,我编写了以下代码:
var y = 10;
var x = 20;
console.log(x = y);
打印出来的结果是20.这个过程和推理是否给出了正确的结果?如果是我了解这个过程,但我不确定结果是20的原因。 我需要一些关于此事的反馈和解释。
答案 0 :(得分:4)
JavasScript中的赋值操作是一个表达式,它返回的值是操作的右侧。这段代码的输出为10,因为它是y
答案 1 :(得分:1)
答案 2 :(得分:0)
输出10。
首先将y分配给x
然后输出结果。
答案 3 :(得分:0)
要么你在撒谎,要么你的JavaScript实现被破坏了:)
根据the standard:
制作AssignmentExpression:LeftHandSideExpression = AssignmentExpression的评估如下:
- 让lref成为评估LeftHandSideExpression的结果。
- 让rref成为评估AssignmentExpression的结果。
- 让rval为GetValue(rref)。
如果满足以下条件,则抛出SyntaxError异常:
- Type(lref)是Reference is true
- IsStrictReference(lref)为真
- 类型(GetBase(lref))是环境记录
- GetReferencedName(lref)是“eval”或“arguments”
调用PutValue(lref,rval)。
- 返回rval。
醇>
因此,x = y
应评估为x
分配后的值{/ 1>},也就是y
的值:{{1 }}
作为旁注,该语言的这一特性对于执行以下操作特别有用:
10
从而将min = max = 0
的评估结果分配给min
,也就是说max = 0
。
答案 4 :(得分:-1)
JavasScript中的=运算符将表达式(左侧)分配给运算符的右侧。所以,输出应该是10。