>  기사  >  웹 프론트엔드  >  JS 변수 범위를 선언하는 방법은 무엇입니까? 함수 내의 범위 예에 대한 자세한 설명

JS 변수 범위를 선언하는 방법은 무엇입니까? 함수 내의 범위 예에 대한 자세한 설명

伊谢尔伦
伊谢尔伦원래의
2017-07-18 10:50:441157검색

변수의 범위는 변수의 가시성을 말하며, 수명주기(생존 기간)는 변수를 다른 관점에서 검토합니다.

JS에서 변수의 범위는 전역 변수와 지역 변수로 나누어집니다. 함수 내에서 정의된 변수를 지역 변수, 함수 외부에서 정의된 변수를 전역 변수라고 합니다. ("함수 외부의 것을 전역 변수라고 합니다"는 상대적입니다. 여기서 논의되는 전제는 var로 명시적으로 선언된 변수입니다. 함수 내에서 var 없이 정의된 변수는 기본적으로 전역 변수입니다. 물론 var 없이 변수를 선언하는 것은 눈살을 찌푸리게 합니다. ).

var glob = 4;//函数外声明全局变量 
function fun() { 
    var height = 20; //函数内用var声明的是局部变量 
    weight = 50; //函数内不用var声明的是全局变量 
} 
fun(); 
alert(weight);

JS에는 블록 수준 범위가 없습니다. 즉, 중괄호 {}로 묶입니다. 자바에는 있습니다. 기본 메소드

public static void main(String... args) { 
  for(int i=0;i<5;i++) { 
  } 
    { 
        int j=10; 
    } 
    int z = 20; 
    System.out.println(i); // i不可见,语法分析时报错,即编译不通过 
    System.out.println(j); // j不可见,语法分析时报错,即编译不通过 
    System.out.println(z); // z可见,输出20 
}

에 다음 코드를 작성합니다. 그러나 JS

for(var i=0;i<5;i++) { 
} 
var obj = {name:"Lily"}; 
for(var attr in obj) { 
} 
{ 
  var j=10; 
} 
alert(i);//输出4,没有块级作用域 
alert(attr); //输出name,没有块级作用域 
alert(j);//输出10,没有块级作用域

에 있는 경우에도 문제가 있음을 보여줍니다. 변수를 선언하는 동안 전역 범위에서 for 루프를 사용하지 마세요. 그렇지 않으면 전역 명명 범위가 오염될 수 있습니다.

물론 JS1.7에서는 변수를 선언하기 위해 for 문의 범위에만 적용되는 let 키워드를 제안했습니다.

for(let i=0;i<5;i++) { 
   //todo 
} 
alert(i);//运行时报错,提示i未定义

js 함수의 변수 범위 예:

<html>
<head>
</head>
<body>
<script type="text/javascript">
var a = 5;
var c = 3;
function t(){
 var a = 6;
 var b = 10;
 document.write(a+&#39;-----&#39;+b);
 document.write(c);
}
t();
</script>
</body>
</html>

PHP와 달리 js 함수에서 변수를 호출하려면 먼저 함수 내에서 변수를 검색합니다. 예를 들어, 예제에서 a는 6입니다. 그러나 c는 함수 본문에서 찾을 수 없으므로 함수 본문 외부에서 검색합니다. 찾을 수 없으면 호출됩니다. 오류를 보고할 것입니다.

위 내용은 JS 변수 범위를 선언하는 방법은 무엇입니까? 함수 내의 범위 예에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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