2013-07-03 2 views
0

다음 예제에서는 var1이 인식되는 이유와 var2가 아닌 이유를 설명 할 수 있습니까? 첫 번째와 두 번째는 동일한 DOM 요소에서 동일한 이벤트를 참조하는 경우 왜 다른 범위로 취급됩니까?

$(document).ready(function() { 

    var1 = 12;  // no var =global 
    var var2 = 24; // local 
}); 

$(document).ready(function() { 

    console.log(var1); // = 12 
    console.log(var2); // fail 

}); 

답변

3

JavaScript에서 범위 지정이 작동하는 방식입니다.

var이 없으면 항상 속성 할당입니다. 암시 적 객체는 window입니다.

DOM의 일부인 이벤트와는 아무런 관련이 없지만 JavaScript는 언어와 관련이 없습니다.

+0

모든 프로그래밍 언어에 존재 .. 그들 사이의 차이점에 대한 자세한 내용을 읽어 보시기 바랍니다 var의 사용법. 나는 다른 범위로 간주되는 것에 더 관심이 있습니다. 두 함수가 같은 DOM 요소에서 같은 이벤트를 참조하기 때문에 병합되지 않습니까? – Abe

+0

@Abe Nope. 그것들은 두 개의 서로 다른 기능으로, 같은 이벤트에 묶여 있습니다. JavaScript (DOM이 아닌 jQuery가 아닌 언어)는 DOM 이벤트가 무엇인지에 대해 알지 못합니다. 내 대답의 마지막 문장은 그 구별을 만든다. – alex

0

을 선언하기 위해 var var2을 사용 했으므로 var1은 전역 범위에서 선언 된 것으로 간주되는 로컬 변수로 간주됩니다.

자바 스크립트 기능 범위를 가지기 때문에 그것에가 호출 된 상기 하나 이상의 다른 기능에 국부적이기 때문에, 기능 범위 내에 선언 된 모든 변수가

0

VAR2가 다른 영역에서 고려된다 내에서만 사용할 수 그것을 .ready 이벤트와 관련이 없습니다. 같이 : 그것은 지역/전역 변수의 문제가

(function(){ 
    var v = 1; 
})(); 
//v outside that function is undefined. if you try to call it, it will return an undefined error 

.. 그들은 내가으로 확인 해요

jsfiddle

관련 문제