상황 1
< ;script>
var i; //전역 변수
//메서드 이름은 카멜 명명법입니다
//메서드의 변수는 지역 변수입니다
function sayHello(){
var x=100;
alert(x);
x ;
}
sayHello() //출력 100
alert(x) ); //x가 지역 변수이고 접근할 수 없기 때문에 오류가 보고됩니다.
상황 2
<script><br>function sayHello(){<br> var x =100;<br> if(x==100){<br> var y=x 1;<br> 경고(y); //출력 101<br>}<br> 경고(y); 출력 101, 메서드 내부적으로는 C#이 아닌 블록 수준 범위가 없습니다! ! ! <br>
for(var i=0;i<2;i ){<P> Alert(i)<BR> } //for 루프에 정의된 변수는 블록 수준 범위입니다. <BR> Alert(i); //i는 지역변수이므로 2를 출력<BR>
</P>}<P>sayHello();<BR></script>
참고: 변수는 사용하기 전에 var로 선언할 필요가 없습니다. 이러한 변수는 "전역 변수"로 간주됩니다. ". 하지만 이렇게 사용되는 경우는 거의 없습니다
undefine 및 null에 대하여
다음 상황에서는 변수 값이 정의되지 않습니다
1. 변수가 정의되었지만 값이 할당되지 않은 경우 변수 값이 정의되지 않습니다
2. , 반환된 값은 정의되지 않았습니다
3. 객체의 속성 값이 존재하지 않으면 반환 값은 document.ddd
와 같이 정의되지 않습니다.
예1:
var xx;
var yy=null;
if(xx==yy){
경고('같음')
}
그밖에{
alert('notequal');
}
if 판단을 내릴 때 브라우저는 xx와 yy의 값을 판단하기 때문에 출력 결과는 동일합니다. 이들 중 어느 것도 특정 값을 갖고 있지 않으며 거짓으로 간주됩니다.
if 판단을 ===[모두 등호]로 바꾸면 출력이 동일하지 않습니다! ===는 xx와 yy의 데이터 유형과 값이 동일해야 한다는 뜻이기 때문이죠!
예2:
var xx=10
var yy='10';
if(xx==yy){
경고('같음');
}
그밖에{
alert('같지 않음');
}
===로 변경하면 출력이 동일하지 않습니다
예3:
var n=' 10';
스위치(n){
케이스 10:
alert('번호');
break;
케이스 '10':
alert('string');
break;
}
출력 문자열
스위치의 판단은 유형을 고려해야 합니다
요약: if의 판단은 종류에 상관없이 가치를 판단하는 것입니다