高阶函数中count ++和count + 1的差异

Ama*_*ngh 2 javascript variables scope

例1

function makeCounter() {
      let count = 0;

      return function() {
        return count++;
      };
    }

    let counter = makeCounter();

    alert( counter() ); 
    alert( counter() );
Run Code Online (Sandbox Code Playgroud)

高于警报0和1.


例2

function makeCounter() {
  let count = 0;

  return function() {
    return count+1;
  };
}

let counter = makeCounter();

alert( counter() ); 
alert( counter() ); 
Run Code Online (Sandbox Code Playgroud)

这分别警告1和1

在编程计数中,++相当于count + 1,那么为什么在上面两个例子中有所区别.我知道它与封闭属性和吊装相关的东西.但完全理解.你们能帮忙吗?

注意:如果没有意义,请告诉我是否应该更改问题的标题.

Poi*_*nty 6

表达式count++求值count,加1,存储结果count,但总结果(净值count++)是原始count.

表达式count + 1求值count,加1,并返回结果.值count不会改变.

有趣的是,虽然可以++count使用替代表达式来模仿(预增量)

var inc = (count += 1);
Run Code Online (Sandbox Code Playgroud)

count++没有使用函数的情况下,我真的没办法(我能想到)干净地模仿,因为没有需要一个临时存储位置:

var inc = () => { let tmp = count; count += 1; return tmp }();
Run Code Online (Sandbox Code Playgroud)

++在20世纪70年代和可能更早的时候,C 的后增量日期的运算符语义被许多其他语言(包括JavaScript)复制.民间传说(我记得它是一个老人)认为增量前和增量后的操作者都受到了DEC PDP-11指令集中可用模式的启发,但这对我来说似乎总是不太可能.