猿问

js新人小白求解答

var cal = counter();
cal(); // num=0
cal(); // num=1

function counter(){
  var num = 0;
  function add(){
    return num++;
  }
  return add;
}

为什么第二个cal()里num等于1?不是也是0吗?

如果counter()改成这样:

function counter(){
  var num = 0;
  function add(){
    return num++;
  }
  return add();
}

console.log(counter()); // 返回0

为什么console返回的是0?不应该是1吗?

慕的地8487277
浏览 1492回答 3
3回答

klivitamJ

第一个是返回指向改方法的指针,指针的方法指向同一个作用域。而第二个则是立即执行方法,如果想要变成1,要么 num++; return n;当然也可以改成++n;

慕少3274410

你可以这么认为:return add = add ++ ;其次就是你对 ++ 在前和 ++ 在后的理解;去到网上看一下 ++ 前后的区别。

Nyears

你可以看一下js i++ ++i的区别
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答