2013-01-17 1 views
0

modulex와 moduley가 모두 선언되지 않았다고 가정합니다.변수를 초기화하는 동안 OR 연산자에 대한 쿼리

var modulex = modulesx || {}; //이 코드 줄은 잘

moduley = moduley || {}; //을 작동하지만이 코드가 moduley이 정의되지 말하는 오류가 발생합니다 :
지금 두 가지 시나리오를 고려하십시오. 다시

,

var modulex = moduley || {};는 // 이것은 또한 오류라고 moduley이 정의되지 발생합니다.


이 부분을 자세히 설명해주십시오.

답변

1

JavaScript에서 변수 선언은 hoisted입니다. 이 코드 :

var a = a || {}; 

실제로 다음과 같이 해석됩니다 두 번째 예에서

var a; 
a = a || {}; 

moduley은 당신의 오류라고 정확히 무엇 인 정의되어 있지 않습니다. 당신의 'moduley'이후

+0

그리고 VAR A를 = A ||로 호출 {}은 이해가되지 않습니다 .. 왜냐하면 var a = {}; 또한 정의되지 않은 경우에도 false로 해석되어야하며 || 뒤에 값을 가져야합니다. 연산자 ... 그렇지? –

+1

@AbhijeetPawar : 이것 좀보세요 : http://stackoverflow.com/questions/833661/what-is-the-difference-in-javascript-between-undefined-and-not-defined – Blender

+0

질문에 더 추가하기 .. . "동일한 변수를 두 번 선언하면 두 번째 선언은 전혀 효과가 없습니다 ... 맞습니까? –

1

"="의 왼쪽 또는 함수 매개 변수로 선언되지 않은 변수는 사용할 수 없습니다. 참조가 초기화되지 않았습니다.

0

이 그것을 사용하기 전에 정의되지 않은, 자바 스크립트 컴파일러는 '정의되지 않은'

관련 문제