>  기사  >  웹 프론트엔드  >  javascript_javascript 스킬의 로컬 변수와 글로벌 변수의 차이점에 대한 자세한 설명

javascript_javascript 스킬의 로컬 변수와 글로벌 변수의 차이점에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 16:12:441869검색

자바스크립트에는 지역 변수와 전역 변수라는 두 가지 유형의 변수가 있습니다. 물론, 우리 기사는 이 두 변수를 실제로 구별하는 데 도움을 주기 위한 것입니다.

우선 지역 변수는 이 변수가 선언된 함수 내에서만 호출할 수 있습니다. 전역 변수는 코드 전체에서 호출할 수 있는 변수입니다. 물론 문자 그대로 이해하는 것은 확실히 명확하지 않습니다. 아래에서 자세히 소개하겠습니다.
우리 모두 알고 있듯이 변수는 var 키워드를 사용하여 선언해야 합니다. 그러나 변수는 JavaScript에서 암시적으로 사용될 수도 있습니다. 즉, 선언 없이 직접 사용할 수 있습니다. 또한 JavaScript는 항상 암시적으로 선언된 변수를 전역 변수로 사용한다는 점에 유의하세요.
예:

코드 복사 코드는 다음과 같습니다.

함수 myName() {
i = '위안젠항';
}
내이름();
함수 sayName() {
경고(i);
}
이름();

출력 결과: yuanjianhang

위 코드를 다음과 같이 변경하면 i 변수는 전역 변수임을 알 수 있습니다.

코드 복사 코드는 다음과 같습니다.

함수 myName() {
var i='yuanjianhang';
}
내이름();
함수 sayName() {
경고(i);
}
이름();

이때 브라우저에는 출력 결과가 없습니다. i가 myName 함수에 정의되어 myName의 로컬 변수일 뿐이고 외부에서 호출할 수 없기 때문입니다.

이제 다음 코드를 다시 살펴보세요.

코드 복사 코드는 다음과 같습니다.

함수 myName() {
i = '위안젠항';
}
내이름();
함수 sayName() {
경고(i);
}
이름();

이제 몇 가지 사항을 변경하고 myName();을 제거해 보겠습니다. 코드는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.

함수 myName() {
i = '위안젠항';
}
함수 sayName() {
경고(i);
}
이름();

이때 브라우저는 응답하지 않습니다. 왜냐하면 i가 전역 변수임에도 불구하고 myName() 함수가 호출되지 않았기 때문에 i를 선언하고 i에 값을 할당하지 않은 것과 동일하므로 출력이 없습니다.
마찬가지로 위의 예를 다음과 같이 변경하면

코드 복사 코드는 다음과 같습니다.

함수 myName() {

i = '위안젠항';
}
함수 sayName() {
경고(i);
}
이름();
내이름();

이 경우에는 결과가 출력되지 않습니다. sayName() 함수가 호출되면 myName 함수가 갖는 값을 확인합니다. 아직 실행되지 않았습니다. 즉, i에 아직 값이 할당되지 않았으므로 결과가 출력되지 않습니다.

모두의 이해를 돕기 위해 또 다른 예를 들어보겠습니다.

코드 복사 코드는 다음과 같습니다.

var i = 'yuanjianhang';
함수 myloveName() {
i = '관시';
}
myloveName();
함수 myName() {
경고(i);
}
내이름();

이번 결과는?
정답은 관시
먼저 i의 원래 값은 yuanjianhang이지만 myloveName() 함수를 호출한 후 i의 값이 guanxi로 변경되므로 최종 출력 결과는 guanxi가 됩니다.

코드를 다음과 같이 변경하는 경우:

코드 복사 코드는 다음과 같습니다.

var i = 'yuanjianhang';
함수 myloveName() {
var i = '관시';
}
myloveName();
함수 myName() {
경고(i);
}
내이름();

이번 결과는 yuanjianhang입니다. 코드의 두 i가 다르기 때문에 하나는 전역이고 다른 하나는 로컬입니다. 두 i의 이름은 동일하지만 이렇게도 이해할 수 있습니다. 이름은 같지만 같은 사람이 아닌 것처럼 본질이 다릅니다.

코드를 다음과 같이 변경하면:

코드 복사 코드는 다음과 같습니다.

var i = 'yuanjianhang';
함수 myloveName() {
i = '관시';
}
함수 myName() {
경고(i);
}
내이름();
myloveName();

결과는 스스로 계산할 수 있다고 믿으며 결과는 위안젠항입니다.

전역 변수는 함수 내부에서 호출할 수 있으므로 다음 상황은 어떻습니까?

코드 복사 코드는 다음과 같습니다.

var i = 'yuanjianhang';
함수 myloveName() {
i = '관시';
경고(i);
}
myloveName();

이때 변수의 값은 얼마인가요?

분석해보자:

먼저 전역 변수 i에 yuanjianhang 값이 할당됩니다.

그런 다음 myloveName() 함수가 호출되고 전역 변수 i에 새 값 guanxi가 다시 할당됩니다

따라서 결과는 guanxi여야 합니다.

다음과 같이 경고를 진행하면 어떻게 될까요?

코드 복사 코드는 다음과 같습니다.

var i = 'yuanjianhang';
함수 myloveName() {
경고(i);
i = '관시';
}
myloveName();

이번 결과는 어떤가요?
확인된 결과는 다음과 같습니다: 정의되지 않음
코드가 다음과 같다면 어떨까요:

코드 복사 코드는 다음과 같습니다.

var i = 'yuanjianhang';
함수 myloveName() {
경고(i);
}
myloveName();

이때 i의 결과는: yuanjianhang

위 정의되지 않은 상황이 발생하는 이유는 코드의 실행 순서가 위에서 아래로 이루어지고 i가 출력되기 전에 i가 정의되지 않기 때문입니다. 따라서 코드를 사용할 때 변수 선언은 유사한 문제를 피하기 위해 코드 앞에 배치되어야 함을 알 수 있습니다!

비슷한 말:

코드 복사 코드는 다음과 같습니다.

var i = 'yuanjianhang';
함수 myloveName() {
경고(i);
var i = '관시';

}
myloveName();

이 경우 다음도 출력됩니다: 정의되지 않음

좋아요. 변수에 대한 소개가 너무 많아서 누구나 이해할 수 있을 거라 믿습니다. 코드를 어떻게 복사하더라도 핵심은 변경되지 않습니다.

위 내용은 이 글의 전체 내용입니다. JavaScript에서 로컬 변수와 전역 변수의 차이점에 대해 더 깊이 이해하셨나요? 새해 복 많이 받으시고 즐거운 학습이 되시기 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.