2012-02-08 3 views
4

나는 현재 이런 방식으로 코딩하고 있습니다 :자바 스크립트 변수는 어떻게 저장해야합니까?

<script type="text/javascript"> 
var linkObj; 

이 데이터를 저장하는 안전한 방법이 있나요? jQuery 또는 다른 플러그인에서 linkObj 변수를 사용하는 경우 신경 쓰죠. 또한 다음과 같은 변수를 선언하면 다른 js 파일에있는 스크립트의 다른 함수에서도이를 볼 수 있습니까?

답변

5
$(document).ready(function(){ 
    var linkObj; 

}); 

은 오래 당신이 var 키워드를 사용할 때, 그 범위에 정의 된 변수는 다른 플러그인에 의해 액세스 할 수 없습니다.

5

변수를 이렇게 선언하면 페이지에서 실행되는 모든 스크립트에 액세스 할 수 있습니다.

(function() {var linkObj; ... })() 

그러나, 함수의이 방법 아무것도 외부가 액세스 할 수 있습니다 :

당신은 그냥 로컬로 사용하는 기능에 포장 할 경우

. 명시 적으로 다른 스크립트 사이에 어떤 변수를 공유하려는 경우

, 당신은 또한 네임 스페이스로 객체를 사용할 수 있습니다

var myProject = {} 
myProject.linkObj = ... 

이 당신에 의존 할 필요가 얼마나 많은 글로벌 이름 최소화 할 수 있습니다.

+0

이렇게하면 두 개 이상의 스크립트에서 var myProject = {}을 (를) 선언해도 괜찮습니까? 내가 공유 할 vmyProject 네임 스페이스를 선언 할 위치가 확실하지 않기 때문에이 질문을 던지고 있습니다. 감사. –

+0

아니요, 하나 이상의 스크립트가 여전히 'myProject'를 선언하고 바인딩을 엉망으로 만들 수 있습니다. 그러나 충분히 고유 한 이름 (예 : 프로젝트 이름)을 지정하면 문제가 발생하지 않습니다. 당신이 정말로 편집증적인 사람이라면, 이름을 부여하기 전에 그것을 찍었는지 확인할 수 있습니다. –

+0

나는 분명치 않다. 미안하다. 내가 의미 한 것은 내 자신의 스크립트 중 하나 이상이었습니다. 두 스크립트가 모두 동일한 네임 스페이스를 사용하지만 어떤 스크립트가 실행될 지 확신 할 수 없다면 괜찮을까요? –

3

것은 폐쇄에 랩 :

<script type="text/javascript"> 
(function() { 
    var linkObj; 
    // Rest of your code 
})(); 
</script> 

이 방법은 자신의 밖에있는 스크립트는 linkObj에 액세스 할 수 없습니다.

1

데이터를 안전하게 저장할 수 있습니까?

이것은 본질적으로 데이터를 저장하지 않고, HTML 페이지라고 가정 할 때 스크립트 블록에서 변수 만 선언합니다. 나중에 페이지를 다시로드하면 이전 값이 유지되지 않습니다.

jQuery 또는 다른 플러그인에서도 linkObj 변수를 사용하면 걱정이됩니다.

다른 사람들이 지적한 것처럼 적절한 우려가 있습니다. 그러나 플러그인은 플러그인 외부의 범위에 의존하지 않아야합니다. 좋은 플러그인 디자인이 이런 일이 일어나지 않도록하기 때문에 많은 영향을 미치지 않습니다.

또한 다음과 같이 변수를 선언하면 포함 된 다른 js 파일에있는 스크립트의 다른 함수에서도 볼 수 있습니까?

예. 스크립트 블록이로드 된 후에 실행이 트리거되는 한. 일반적으로 스크립트 선언이 페이지에 나타나는 순서를 따릅니다. 또는 순서에 관계없이 jQuery DOM의 'ready'이벤트와 같이 실행될 경우 페이지에 표시됩니다.

이 문제와 관련된 '전역 이름 공간 오염'을 피하는 것이 좋습니다. 이를 수행하기 위해 함수를 사용하여 코드를 포함하고 스크립트 블록에서 해당 함수를 직접 호출 할 수 있습니다.

(function() { 
    var a = 1; // the scope is within the function 

    alert('The variable a is equal to: ' + a); 

})(); // the parenthesis invoke the function immediately 
관련 문제