2011-01-21 2 views
1
<script type="text/javascript"> 
     $(document).ready(function() { 
      var SOME_ID= 234; 

     }); 

    </script> 
<script type="text/javascript" src="<%= HtmlExtension.ScriptFile("~/somefile.js") %>"></script> 

.js 파일은 SOME_ID 값만 사용하지만 SOME_ID가 정의되지 않았다는 오류가 표시됩니다.페이지에서 js 변수를 선언했습니다. js 파일을 포함시키지 못했습니다.

이론적으로 작동하지 않아야합니까?

+2

, 그것은 작동합니까? – Lance

답변

1

귀하의 변수는 익명의 기능 범위 내에서 정의됩니다. 준비된 핸들러 외부로 이동하면 작동해야합니다.

6

익명 함수 내에서 지역 변수를 선언했습니다. 전역 변수로 사용하려면 window.SOME_ID = 234;을 대신 사용하거나 익명 함수 밖으로 이동하십시오.

예는 다음 중 하나를 글로벌 변수는 특성이 있기 때문에

<script type="text/javascript"> 
    $(document).ready(function() { 
     window.SOME_ID= 234; 

    }); 
</script> 

또는

<script type="text/javascript"> 
    var SOME_ID= 234; 
    $(document).ready(function() { 

    }); 
</script> 

어느 쪽이든 외부 파일 중 SOME_ID (정규화되지 않은) 또는 window.SOME_ID으로 액세스 할 전역 개체 (브라우저의 경우 window)

+0

참고 : 브라우저에서 창을 사용하는 것이 안전하지만 javascript에 대한 전역 컨텍스트는 항상 아닙니다. – Hemlock

+0

@Hemlock : "전역 변수 개체"를 의미합니다. ;-) 그리고 네, 그건 사실입니다. 브라우저가 아닌 환경에서 전역 변수 객체는 완전히 익명이거나 다른 이름을 가질 수 있습니다. 이것은 분명히 브라우저 환경이지만 여전히 언급할만한 가치가 있습니다. –

2

익명 함수 내에서이 함수 내에서만 액세스 할 수있는 로컬 변수를 선언했습니다. 당신은 외부를 선언해야합니다

var SOME_ID = 0; 
$(function() { 
    SOME_ID = 234; 
}); 
1

이 변수는 기능 식 (FE)에 범위 ready 메서드에 전달 -가이 범위 밖에 사용할 수 없습니다.

당신은 다른 스크립트가 액세스 할 수 있도록 당신이 원하는 경우 var에 글로벌 만들 필요가 : 준비 문서의 외부에서 VAR를 이동하는 경우 예상대로

var SOME_ID; 
$(document).ready(function() { 
    SOME_ID = 234; 
});