샘플 시나리오를보십시오. var myvariable;
그런 다음 다른 JavaScript 파일에서 값을 varaiable에 할당합니다.
myvariable = "Hi";
내가 무엇을 시도 했습니까?
기본적으로 내가 한 일은 Firebase의 custom-email-handler 의 newPassword 변수입니다 . 비밀번호를 재설정하는 다른 페이지가 있지만 다른 JavaScript 파일에서 비밀번호를 변경하는 스크립트가 있습니다.
이 myvariable
전역 범위에있는 경우 (즉, 어떤 함수에도 포함되지 않음) 기본적으로 다른 모든 스크립트에서 사용할 수 있습니다. 그리고 실망스럽게도 다른 함수 내에서 선언하지만 선언 할 때 "var"를 사용하는 것을 잊어 버리면 전역 범위에 포함됩니다.
<script src="script1.js"></script>
<script src="script2.js"></script>
script1.js :
var myvariable = "hi";
script2.js :
console.log(myvariable);
// "hi"
때문에 페이지가로드는, "안녕하세요", 콘솔에 인쇄 할 때 script1.js
첫 번째로 나열했다
<script src="script1.js"></script>
<script src="script2.js"></script>
script1.js :
function() {
var myvariable = "hi";
}
script2.js :
console.log(myvariable);
// Uncaught ReferenceError: myvariable is not defined
페이지가로드되면 script2.js는 myvariable
함수 범위 내에서 잠겨 있기 때문에 볼 수 없기 때문에 오류를 발생시킵니다 .
<script src="script1.js"></script>
<script src="script2.js"></script>
script1.js :
var myFunc = function() {
//notice I'm not going to use "var" in front of myvariable
myvariable = "hi";
}
//As soon as you call the function, myvariable is now global. Oops!
myFunc();
script2.js :
console.log(myvariable);
// "hi"
이 주제에 대해 더 알고 싶다면 "javascript scope", "javascript global scope"또는 "javascript implicit global"을 검색하십시오.
그리고 원래 혼란의 지점이라고 생각하는 부분을 해결하려면 모든 스크립트가 브라우저 창 컨텍스트에서 실행된다는 점을 기억하십시오. "이 스크립트가 해당 스크립트와 대화하게하려면 어떻게해야합니까?"라는 개념이 없습니다. 작동 방식을 시각적으로 보려면 스크립트의 내용을 가져 와서 하나의 큰 스크립트 파일에 덤프한다고 상상해보십시오. 그것은 개념적으로 브라우저가 모든 것을로드 한 후에 일어나는 일입니다 (비동기로드와 같은 고급 주제 제외).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다