2012-01-24 6 views
4

그래서 "var"없이 초기화 된 js 변수가 전역 변수라고 들었습니다. so :javascript 전역 변수 범위

$(document).ready(function(){ 
     function foo(){ 
     //since i'm not using "var", will this function become global? 
     } 

     var bar = function(){ 
     //is this the better way to declare the function? 
     } 
}) 

글로벌 인 경우 콘솔에서 액세스 할 수없는 이유는 무엇입니까? 글로벌이 아니며 범위가 함수에 포함되어 있다면 "var"비용을 일부 생략하면됩니까? 감사.

답변

13

var없이 선언 된 변수 만 전역 변수가되며, 이는 함수에 적용되지 않습니다.

foo = function() {} 

을하며 글로벌 있어야한다 :

당신은, 그러나,과 같이 foo는 선언 할 수 있습니다.

var를 생략하는 것은 일반적으로 (머리 위로 떨어져) 이러한 이유로 권장되지 않습니다

  • 변수 해상도는 대부분의 지역에서 시작하고 느리게 만드는 글로벌 네임 스페이스에보고를 향해 간다. 특정 브라우저에서 훨씬 느립니다.
  • 전역 네임 스페이스를 오염시켜 결국 이름 충돌이 발생하는 경향이 있습니다. 최악의 범죄자 중 하나는 당신이 선택하는 경우, for(i = 0; i < arr.length; i++) 인해 hoisting

    BTW라는 언어 기능에 당신은 var를 사용하여 함수를 선언 할 수 있습니다

(var의 부족주의), 말 것 var와 함수를 선언, 나는 당신이 그렇게이 방법을 권장합니다

대신 뎁에 도움이됩니다, 익명 함수로 치료를 받고의 "이름"기능을 제공하기 때문에
var foo = function foo() {} 

ugging. 대부분의 사람들은 이것을하지 않고 function을 사용한다고 선언합니다.

+3

+1은'... = function foo() {}'를 사용합니다. 당신이 그렇게 두 배 이름을 붙일 수 있다는 것을 몰랐습니다. –