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