a = 3 let b = 4
返回的是3, 为什么不是返回声明语句的undefined
进一步阐述下问题:首先, 截图如下:
这里的第三次输入为什么返回的不是最后一句let b =4 的返回值undefined, 而是 3.
let b =4
undefined
3
这种现象是一种什么样的机制呢?
这个和浏览器没关系, a = 3 这个语句在ECMA定义里就该返回3,它是一个链式调用的过程,比如说a = b = 3,这段代码,如果 b = 3的返回值不是3,那么a的值还怎么传。
a = b = 3
用ECMA里面的话来讲就是 LeftHandSideExpression = AssignmentExpression,返回值是AssignmentExpression。
LeftHandSideExpression = AssignmentExpression
附上ECMA原文:
The production AssignmentExpression : LeftHandSideExpression = AssignmentExpression is evaluated as follows:
=
Throw a SyntaxError exception if the following conditions are all true:
"eval"
"arguments"
ref:http://www.ecma-international...
1.4m articles
1.4m replys
5 comments
56.8k users