>  기사  >  웹 프론트엔드  >  JavaScript에서 지역 변수와 전역 변수를 사용하는 방법과 차이점은 무엇입니까?

JavaScript에서 지역 변수와 전역 변수를 사용하는 방법과 차이점은 무엇입니까?

伊谢尔伦
伊谢尔伦원래의
2017-07-18 09:50:102322검색

Javascript에는 지역 변수와 전역 변수라는 두 가지 유형의 변수가 있습니다.

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

function myName() {
 i = 'yuanjianhang';
}
myName();
function sayName() {
 alert(i);
}
sayName();

출력 결과는 다음과 같습니다. yuanjianhang

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

function myName() {
 var i='yuanjianhang';
}
myName();
function sayName() {
 alert(i);
}
sayName();

이때 브라우저에는 출력이 없습니다. 결과는 i가 myName 함수에 정의되어 있으므로 myName의 지역 변수일 뿐이며 외부에서 호출할 수 없습니다.


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

function myName() {
 i = 'yuanjianhang';
}
myName();
function sayName() {
 alert(i);
}
sayName();

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

function myName() {
 i = 'yuanjianhang';
}
function sayName() {
 alert(i);
}
sayName();

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

function myName() {
 
 i = 'yuanjianhang';
}
function sayName() {
 alert(i);
}
sayName();
myName();

로 변경하면 결과가 출력되지 않습니다. sayName() 함수가 호출되면 JavaScript 코드가 실행됩니다. .value. 현재 myName 함수가 실행되지 않았으므로 i에 값이 할당되지 않았으므로 결과가 출력되지 않습니다.

JavaScript 범위를 나누는 기준은 if, while, for가 아닌 함수 함수 블록입니다.

<script>
function f1(){
   alert("before for scope:"+i);   
 //i未赋值(并不是没有声明!使用未声明变量或函数会导致致命错误从而中断脚本执行)
 //此时i值为undefined
   for(var i=0; i<3;i++){
       alert("in for scope:"+i);}
 //i的值是0,1,2 
   alert(“after for scope:”+1);
  //i的值是3,此时已经在for scope之外,但i的值仍然保留为3
    while(true){
       var j=1;
       break;}
    alert(j);
  //j的值是1,此时已经在while scope之外,但j的值仍然保留为1
    if(true){
      var k=1;
    }
    alert(k);
  //k的值为1,此时已经在if scope之外,但k的值仍保留为1
}
f1();
//此时在函数块外调用函数,再次输出存在于f1这个function scope里的i j k变量
alert(i);
//error!!!原因是这里的i未声明(不是未赋值,区别f1的第一行输出),脚本错误,程序结束!
alert(j);   
//未执行
alert(k);
//未执行
</script>

JavaScript는 실행 전에 전체 스크립트 파일을 사전 컴파일(로컬 변수 부분을 포함하여 스크립트 파일의 선언 부분 분석)합니다. 실제 변수의 범위를 결정합니다. 예를 들면 다음과 같습니다.

<script>
   var x=1;
   function f2(){
    alert(x);
   //x的值为undefined!这个x并不是全局变量,因为在function scope已经又声明了一个重名的局部变量,所以全局变量的参数a被覆盖了。
    说明了JavaScript在执行前会进行预编译,函数体内的x就被指向局部变量,而不是全局变量。此时x只有声明,没有赋值,所以为undefined
    x=3;
    alert(x);
   //x值为3.但还是局部变量
    var x;
   //局部变量x在这里声明
    alert(x);
   //值为3
   }
   f2();
   alert(x);
   //x值为1,并不是在function scope内,x的值为全局变量的值。
</script>

전역 변수가 지역 변수와 이름이 같은 경우 지역 변수의 범위가 전역 변수의 범위를 덮어쓰고 지역 변수의 범위를 벗어나면 다시 원래 변수로 돌아갑니다. 전역 변수의 범위, 전역 변수가 지역 변수를 만났을 때

전역 변수는 어떻게 사용하나요? window.globalVariableName을 사용하세요.

아아아아

위 내용은 JavaScript에서 지역 변수와 전역 변수를 사용하는 방법과 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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