>  기사  >  웹 프론트엔드  >  JavaScript 변수 유형 및 변수 범위를 더 잘 이해하는 방법

JavaScript 변수 유형 및 변수 범위를 더 잘 이해하는 방법

伊谢尔伦
伊谢尔伦원래의
2017-07-18 10:19:311162검색

변수 유형

 Javascript는 Java 및 C와 같은 언어와 다릅니다. 유형이 없고 약하게 감지되는 언어입니다. 변수를 정의할 때 변수 유형을 선언할 필요가 없습니다. 할당을 통해 동일한 변수에 다양한 유형의 데이터를 할당할 수 있습니다. 예를 들면 다음과 같습니다.

i=100;//Number类型 
i="variable";//String类型 
i={x:4};//Object类型 
i=[1,2,3];//Array类型

JS의 이 기능은 코딩을 더욱 유연하게 해주지만 디버깅에 도움이 되지 않는 단점도 있습니다. 컴파일러의 약한 감지로 인해 긴 코드를 유지하는 것이 상당히 고통스럽습니다.

전역 변수 및 지역 변수
JS 파서가 실행되면 먼저 실행 환경에서 전역 객체를 빌드합니다. 우리가 정의하는 전역 속성은 우리가 사용하는 최상위 코드에서 읽혀집니다. this 키워드와 window 객체를 통해 액세스할 수 있습니다. 함수 본문의 지역 변수는 함수가 실행될 때 생성된 호출 개체에만 존재합니다. 지역 변수는 함수가 실행되는 즉시 소멸됩니다. 따라서 프로그래밍에서는 변수를 합리적으로 선언하는 방법을 고려해야 합니다. 이렇게 하면 불필요한 메모리 오버헤드를 줄일 수 있을 뿐만 아니라 반복적인 변수 정의 및 이전에 정의한 변수 덮어쓰기로 인해 발생하는 디버깅 문제를 크게 피할 수 있습니다.

변수 범위
 변수의 범위는 모든 프로그래밍 언어에서 중요한 세부 사항입니다. JS의 변수 범위는 JAVA, C 등의 언어에 비해 상대적으로 자유롭습니다. JS 변수에는 블록 수준 범위가 없다는 것이 큰 특징입니다. 다음 코드:

<SCRIPT LANGUAGE="JavaScript" type="text/javascript"> 
//定义一个输出函数 
function outPut(s){ 
document.writeln(s) 
} 
//全局变量 
var i=0; 
//定义外部函数 
function outer(){ 
//访问全局变量 
outPut(i); // 0 
//定义一个类部函数 
function inner(){ 
//定义局部变量 
var i = 1; 
// i=1; 如果用隐式申明 那么就覆盖了全局变量i 
outPut(i); //1 
} 
inner(); 
outPut(i); //0 
} 
outer(); 
</SCRIPT>

출력 결과는 0 1 0입니다. 위에서 JS가 var를 사용하여 함수 본문에서 변수를 선언하면 이 변수는 함수 본문 내에서만 유효하다는 것을 증명할 수 있습니다. 함수가 끝나면 지역 변수가 소멸될 수 있습니다.
위의 JS 기능 때문에 주의가 필요한 또 다른 핵심 문제가 있습니다. ActionScript는 이전에도 사용되었지만 JS와 모두 ECMA 표준을 기반으로 하지만 여기서는 약간 다릅니다. 예를 들어, 다음 코드:

<SCRIPT LANGUAGE="JavaScript" type="text/javascript"> 
//定义一个输出函数 
function outPut(s){ 
document.writeln(s) 
} 
//全局变量 
var i=0; 
//定义外部函数 
function outer(){ 
//访问全局变量 
outPut(i); // 0 
//定义一个类部函数 
function inner(){ 
outPut(i); //undefiend 
var i=1; 
outPut(i); //1 
} 
inner(); 
outPut(i); //0 
} 
outer(); 
</SCRIPT>

JS 변수 범위

<script language ="javascript" type ="text/javascript" > 
var a = "change"; 
function fun() { 
alert(a);//输出undefined 
var a = "改变了"; 
alert(a);//输出改变了 
} 
alert(a);//输出change 
fun(); 
</script>

var는 a가 처음으로 출력되기 전에 사전 컴파일 분석에서 변경하도록 a를 할당했습니다. 첫 번째 출력 변경 fun() 함수가 호출되면 JS는 a를 출력하기 전에 모든 var 변수의 값을 정의되지 않은 상태로 초기화하므로 fun()의 첫 번째 출력은 정의되지 않습니다. 두 번째 출력에는 값이 할당되었으므로 새 값이 출력됩니다. 두 개의 a는 함수 내부와 외부의 서로 다른 두 변수입니다. 예:

<script language ="javascript" type ="text/javascript" > 
var b; 
function fun() { 
b = "change"; 
} 
alert(b);//输出undefined 
</script>

변수 b는 함수 외부에서 정의되었으며 주어진 값이 있습니다. 함수 b의 값에는 값이 할당되지만 출력은 정의되지 않습니다.

위 내용은 JavaScript 변수 유형 및 변수 범위를 더 잘 이해하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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