2012-11-19 2 views
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으로 설정되어 있습니까? 다음

function q0() { 

return ++q0.unique; 

} 

접미사 ++ 반환 현재 값 단위 : 코드가 있다면 사실 일 것이다

답변

3

. 접두사가 ++ 인 것은 다른 방법입니다.

+0

아, 그렇군요. 게시물 외에 pre. – Sethen

2

후위 증가 연산자는 증가 전에 값을 반환합니다.

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

가장 좋은 방법은 give the value and then incrementa++을 읽는 것입니다 기억합니다. 당신은 증가 후 값을 반환하려는 경우 사전 및 사후 점진을 혼동

return ++q0.unique; 

Reference

1

사용합니다. 을 감안할 때 : var x = ++unique이 점진 (1) 후 unique의 값을 할당 할 때

var unique = 0; 

var x = unique++unique (0)의 현재 값을 할당합니다. 두 경우 모두 unique의 값은 결국 1입니다.

당신이 원하는 것은 :

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

예 :

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

두 증가 사업자가 있습니다

var x = 0; 

alert(x++) // 0 
alert(x) // 1 
alert(++x) // 2 
관련 문제