功能属性不正常增加?

时间:2012-11-19 21:09:23

标签: javascript post-increment

我正在练习一些不同的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 个答案:

答案 0 :(得分:3)

如果你的代码是:

,那就是这样
function q0() {

return ++q0.unique;

}

后缀++返回当前值,然后递增。使用带前缀的++,反之亦然。

答案 1 :(得分:2)

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

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

回忆起来的最佳方式是将a++视为give the value and then increment

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

return ++q0.unique;

Reference

答案 2 :(得分:1)

您在增量前后混淆。给出:

var unique = 0;

var x = unique++将分配{em>当前值unique0),而var x = ++unique将在增加后分配unique的值( 1)。在这两种情况下,unique的值都是1

你想要的是:

function q0() {
  return ++q0.unique;
}

答案 3 :(得分: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