2011-08-23 9 views
1

: 자바 스크립트의자바 스크립트 VAR 구문

var array = array || []; 

... 그리고 다음 두 부분이 서로 동일?

var array = array || []; 
array.push([1],[2]); 
array.push([3]); 

=

var array = array.push([1],[2],[3]) || []; 

?

답변

1

이 어레이는 falsy 값이면 (undefinednull 등)을 의미 [];

편집 :

두 번째 부분 - 이것들은 동일하지 않습니다. 예컨대

, 배열 undefined이다

var array = array.push([1],[2],[3]) || []; 

이 예외가 발생한다.

:

var array = array || []; 
array.push([1],[2]); 
array.push([3]); 

하지 않습니다.

1

var가 정의되지 않은 경우 새 배열로 설정 중입니다. var array에 할당 될 값이 빈 배열 - -

1

이 구문은 javascript 부울 or 연산자와 true/false 문 평가를 사용하여 유효한 기본값을 제공합니다.

그래서

var array = array || []; 

수단는 "array가 false 평가되는 경우는 하늘의 배열을 사용합니다."

2

그것은이 동일합니다,

var array; 
if(array){ 
    array = array; 
} else { 
    array = []; 
} 

그냥 훨씬 짧은 형태이다.

두 번째 부분에서는 해당 두 가지가 동일하지 않습니다.

array.push([1],[2],[3]) 

은 무엇이든 상관없이 실행해야합니다. || []을 사용하면 추가되지 않습니다. 즉

, 당신은

var array; 
if(array){ 
    array = array; 
} else { 
    array = []; 
} 
array.push([1],[2],[3]); 

이 시작 그리고 당신은 그것이 falsey 경우 첫 번째 문은 빈 배열로 array을 설정합니다

var array; 
if(array){ 
    array = array; 
    array.push([1],[2],[3]); 
} else { 
    array = []; 
} 
+0

감사합니다. 이미 문제를 해결하고 있습니다. Google Analytics 추적 코드를 최적화하는 중입니다. – 350D

2

이 그것을 수정 값 (null, undefined 등).

다음 두 부분은 같지 않으므로 push을 배열이 아닌 것으로 호출하려고하면 실패합니다.