1

我正在练习一些不同的 JavaScript 技术,即函数属性。这是让我有点摸不着头脑的事情。

//property of the q0 function
q0.unique = 0;


function q0() {

return q0.unique++;

}

console.log(q0()); //returns 0 
console.log(q0()); //returns 1
console.log(q0()); //returns 2
console.log(q0()); //returns 3

第一次调用函数不应该返回 1 吗?为什么返回0?q0.unique 已经设置为 0?

4

4 回答 4

3

如果您的代码是:

function q0() {

return ++q0.unique;

}

后缀++返回当前值然后递增。带前缀++的则相反。

于 2012-11-19T21:10:51.437 回答
2

后缀增量运算符返回增量之前的值。

var a = 0;
var b = a++;
// now a==1 and b==0

回忆它的最好方法是读a++give the value and then increment.

如果要在增量后返回值,请使用

return ++q0.unique;

参考

于 2012-11-19T21:11:17.433 回答
1

您混淆了增量前和增量后。鉴于:

var unique = 0;

var x = unique++将分配( ) 的当前值,而将分配后增量 ( ) 的值。在这两种情况下, 的值毕竟是。unique0var x = ++uniqueunique1unique1

你想要的是:

function q0() {
  return ++q0.unique;
}
于 2012-11-19T21:11:18.557 回答
1

有两个增量运算符:

var++ // increment  the variable ---after--- the operation.  
++var // increment  the variable ---before-- the operation.

例子:

var x = 0;

alert(x++) // 0
alert(x)   // 1
alert(++x) // 2
于 2012-11-19T21:12:26.793 回答