자 바스 크 립 트 전역 변수 와 국부 변수의 문제 에 대한 영향 을 깊이 이해 하 다
9175 단어 자바 script
JavaScript 。 , 。 , 。 JavaScript , 。 , ; ,JavaScript , 。
** **
JavaScript , this 。 。 , , window, window( ) 。 :
myglobal = "hello"; //
console.log(myglobal); // "hello"
console.log(window.myglobal); // "hello"
console.log(window["myglobal"]); // "hello"
console.log(this.myglobal); // "hello"
** **
, JavaScript web , , , 。
1. JavaScript
2.
3.
4. ,
, , result; , result 。 , ! :
function sum(x, y) {
// :
result = x + y;
return result;
}
//
function sum(x, y) {
var result = x + y;
return result;
}
result 。 , . 。 。
var 。 ,a b , : :
// ,
function foo() {
var a = b = 0;
// ...
}
//
function foo() {
var a, b;
// ... a = b = 0; //
}
, , b = 0, b 。 0, 0 var a。 , :var a=(b=0). , ,
** var **
, delete 。
1. var ( ) 。
2. var ( ) 。
, , , 。 delete , :
//
var global_var = 1;
global_novar = 2; //
(function () {
global_fromfunc = 3; //
}());
//
delete global_var; // false
delete global_novar; // true
delete global_fromfunc; // true
//
typeof global_var; // "number"
typeof global_novar; // "undefined"
typeof global_fromfunc; // "undefined"
ES5 , ( ) 。
** **
, window ( , window )。 , ( )。 window , :
var global = (function () {
return this;
}());
, ( new ),this 。 ECMAScript 5 , , , 。 , JavaScript , , , this 。
** var **
var , :
1. .
2.
3. ,
4. ( )
var :
function func() {
var a = 1,
b = 2,
sum = a + b,
myobject = {},
i,
j;
// function body...
}
var 문 구 를 사용 하여 여러 변 수 를 설명 하고 쉼표 로 구분 할 수 있 습 니 다.이와 같이 변 수 를 초기 화하 고 값 을 초기 화 하 는 것 이 좋 습 니 다.이렇게 하면 논리 적 오 류 를 방지 할 수 있 습 니 다.코드 를 본 후에 초기 화 된 값 에 따라 이러한 변수의 대체적인 용 도 를 알 수 있 습 니 다. 예 를 들 어 대상 으로 할 까요, 정수 로 할 까요?
당신 도 성명 할 때 실제 작업 을 할 수 있 습 니 다. 예 를 들 어 앞의 코드 중의 sum = a + b 와 같은 상황 입 니 다. 다른 예 는 DOM (문서 대상 모델) 을 사용 하여 인용 할 때 단일 한 var 를 사용 하여 DOM 인용 을 부분 변수 로 지정 할 수 있 습 니 다. 아래 코드 와 같 습 니 다.
function func() {
var a = 1,
b = 2,
sum = a + b,
myobject = {},
// function body..
}
//
function updateElement() {
var el = document.getElementById("result"),
style = el.style;
// el style ...
}
}
질문
JavaScript 에 서 는 함수 의 모든 위치 에서 여러 개의 var 문 구 를 설명 할 수 있 으 며, 함수 상단 성명 처럼 역할 을 발휘 할 수 있 습 니 다. 이러한 행 위 를 hoisting (서 스 펜 션 / 지붕 해석 / 예비 해석) 이 라 고 합 니 다.변 수 를 사용 하고 얼마 지나 지 않 아 함수 에서 다시 설명 하면 논리 적 오류 가 발생 할 수 있 습 니 다.자바 스 크 립 트 에 대해 서 는 변 수 를 같은 역할 영역 (같은 함수) 에 있 으 면 모두 설명 으로 여 겨 집 니 다. var 성명 전에 사용 하 더 라 도.다음 예 를 보 세 요.전역 변수 function func () {alert (myname); / "undefined" var myname = "local"; alert (myname); / "local"} func (); /정규 my name = "global"; /global variable function func () {var my name; / 는 - > var my name = undefined; alert (my name); / "undefined" my name = "local"; alert (my name); / / "local"} func ();
이 예 에서 첫 번 째 alert 가 'global', 두 번 째 팝 업 'loacl' 이 라 고 생각 할 수도 있 습 니 다.이러한 기 대 는 이해 할 수 있 습 니 다. 첫 번 째 alert 때 my name 이 설명 되 지 않 았 기 때 문 입 니 다. 이때 함 수 는 자 연 스 럽 게 전체 변수 my name 을 볼 것 입 니 다. 그러나 사실은 이렇게 작 동 하지 않 습 니 다.첫 번 째 alert 에서 'undefined' 가 나타 나 는 것 은 my name 이 함수 의 부분 변수 로 여 겨 졌 기 때 문 입 니 다. (나중에 설명 되 었 음 에 도 불구 하고) 모든 변 수 는 함수 의 맨 위 에 걸 려 있 습 니 다.따라서 이러한 혼란 을 피하 기 위해 서 는 사용 하고 싶 은 모든 변 수 를 미리 밝 히 는 것 이 좋다.
총결산
코드 처 리 는 두 단계 로 나 뉘 는데 첫 번 째 단 계 는 변수, 함수 성명, 그리고 정상 적 인 형식의 매개 변수 생 성 입 니 다. 이것 은 상하 문 을 해석 하고 들 어 가 는 단계 입 니 다.두 번 째 단 계 는 코드 실행 입 니 다. 함수 표현 식 과 불합격 식별 자 (성명 을 위 한 변수) 가 생 성 되 었 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.