我正在练习一些不同的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?
答案 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;
答案 2 :(得分:1)
您在增量前后混淆。给出:
var unique = 0;
var x = unique++
将分配{em>当前值unique
(0
),而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