1. 자바스크립트 변수 범위
JavaScript에서 변수는 크게 지역 변수와 전역 변수의 두 가지 유형으로 나뉘며 해당 범위도 지역 범위와 전역 범위입니다.
1 지역 변수와 범위
지역 변수는 일반적으로 함수 본문 내에서 선언되고 사용됩니다.
function func(){ var i=12;//지역 변수...}지역 변수의 범위는 변수가 선언된 함수의 본문 내에서 사용됩니다.
지역변수의 선언주기는 함수가 호출되어 실행될 때 초기화되고, 함수 호출이 완료된 후에는 소멸됩니다.
2. 전역 변수 및 범위
전역 변수는 일반적으로 함수 본문 외부에서 선언됩니다.
var i=12;//전역 변수 함수 func(){......}선언 없이 직접 사용되며 기본값이 전역 변수인 변수도 있습니다.
function func(){ i=12;//선언되지 않음(var 키워드를 사용하여 선언됨), 기본값은 전역 변수입니다.}전역 변수는 현재 페이지의 모든 스크립트와 메소드에서 사용할 수 있으며 해당 범위는 현재 페이지 스크립트에 있습니다.
전역 변수의 선언 주기는 변수가 초기화될 때 생성되고 현재 페이지가 닫히면 소멸됩니다.
2. 키워드 유형
typeof 키워드는 주로 변수의 데이터 유형을 감지하는 데 사용됩니다. JavaScript의 주요 데이터 유형은 문자열, 숫자, 불리언, 객체 등입니다.
console.log(typeof 'str');//stringconsole.log(typeof 23);//numberconsole.log(typeof false);//booleanconsole.log(typeof [1,3,12]);//objectconsole. log(typeof {name:'jack',age:12});//objectconsole.log(typeof new Date());//object참고: js의 배열과 json 객체는 모두 객체 데이터 유형입니다.
3. null 및 정의되지 않음
Null 및 정의되지 않음은 JavaScript에 자주 나타나며, 이는 변수 값이 비어 있거나 변수가 정의되지 않았음을 나타냅니다. 값을 표현할 때 Null 값으로 표현할 수는 있지만 여전히 데이터 유형이 다릅니다.
console.log(typeof null);//objectvar persion = null;console.log(persion);//nullconsole.log(typeof undefine);//undefinevar persion2;console.log(persion2);//undefine
null의 데이터 유형은 object이고, undefed의 데이터 유형은 정의되지 않습니다.
변수가 선언되면 값은 null이고 변수를 할당하지 않고 선언만 하면 값이 정의되지 않습니다.
또 다른 비교 세트를 살펴보겠습니다.
console.log(null==undefine);//true 값은 동일합니다. console.log(null===undefine);//false 유형은 동일하지 않습니다.
null과 undefed가 값을 나타낼 때 둘 다 비어 있음을 나타내는 것을 볼 수 있습니다. null의 데이터 유형은 객체이고 undefed의 데이터 유형은 정의되지 않습니다. 초기화하지 않고 선언한 값은 정의되지 않습니다.
다음은 보충설명입니다
상황 1
<script> var i; //전역 변수//메소드 이름은 지역 변수입니다. function sayHello(){ var x=100; return(x); / /출력 100 경고(x); //x가 지역 변수이고 접근할 수 없기 때문에 오류가 보고됩니다.</script>상황 2
<script>function sayHello(){ var x=100; if(x==100){ var y=x+1; 경고(y); //출력 101 } 경고(y); 메서드 내부에는 C#에서는 불가능한 블록 수준 범위가 없습니다! ! ! for(var i=0;i<2;i++){ Alert(i) } //for 루프에 정의된 변수는 블록 수준 범위입니다. Alert(i) //i는 지역 변수이므로 2가 출력됩니다. } sayHello();</script>참고: 변수는 사용하기 전에 var로 선언할 필요가 없습니다. 이러한 변수는 "전역 변수"로 간주되지만 이런 방식으로 사용되는 경우는 거의 없습니다.
정의되지 않음 및 null 정보
다음 상황에서는 변수 값이 정의되지 않습니다.
1. 변수가 정의되었지만 값이 할당되지 않은 경우 변수의 값은 정의되지 않습니다.
2. 호출된 메서드에는 반환 값이 없으며 반환 값은 정의되지 않습니다.
3. 객체의 속성 값이 존재하지 않는 경우 반환 값은 다음과 같이 정의되지 않습니다: document.ddd
예1:
var xx;var yy=null;if(xx==yy){ 경고('같음');}else{ 경고('같지 않음');}if 판단을 수행할 때 브라우저는 xx와 yy 값 모두 특정 값이 없으므로 false로 간주하므로 출력 결과는 동일합니다.
if 판단이 ===[모두 등호]로 대체되면 출력은 동일하지 않습니다! ===는 xx와 yy의 데이터 유형과 값이 동일해야 함을 의미하기 때문입니다!
예2:
var xx=10var yy='10';if(xx==yy){ 경고('같음');}else{ 경고('같지 않음');}출력이 동일합니다. ===로 변경되면 출력이 동일하지 않습니다.
예3:
var n='10';switch(n){ 사례 10: 경고('번호'); 중단; 사례 '10': 경고('문자열');출력 문자열
스위치의 판단은 유형을 고려해야 합니다.
요약: if의 판단은 유형에 관계없이 값을 판단하는 것입니다.