【发布时间】:2018-09-05 13:38:11
【问题描述】:
示例 1
function makeCounter() {
let count = 0;
return function() {
return count++;
};
}
let counter = makeCounter();
alert( counter() );
alert( counter() );
分别高于警报 0 和 1。
示例 2
function makeCounter() {
let count = 0;
return function() {
return count+1;
};
}
let counter = makeCounter();
alert( counter() );
alert( counter() );
这分别提醒 1 和 1
在编程中 count++ 等价于 count+1 ,那么为什么上面两个例子有区别。我知道它与关闭属性和提升有关。但是完全理解。你们能帮忙吗?
注意:如果没有意义,请告诉我是否应该更改问题的标题。
【问题讨论】:
-
count++与count = count + 1相同。 -
@JosephWebber 不,不是!
(count = count + 1)的值比count的原始值大1。 -
@Pointy 对不起,我更新了示例 2,它应该是 count+1 而不是 count++
-
@JosephWebber 对不起,我更新了示例 2,它应该是 count+1 而不是 count++
-
@Pointy 我的错,你是对的。我没有想到
++将在count被返回之后完成。
标签: javascript variables scope