Situation One
<script>
var i; //全局變量
//方法名是camel命名法
//方法里面的變量是局部變量
function sayHello(){
var x=100;
alert(x);
x++;
}
sayHello(); //輸出100
alert(x); //報錯,因為x是局部變量,訪問不到
</script>
Situation Two
<script>
function sayHello(){
var x=100;
if(x==100){
var y=x+1;
alert(y); //輸出101
}
alert(y); //也輸出101,在方法內部,不存在塊級作用域,在C#中就不可以了!!!
for(var i=0;i<2;i++){
alert(i)
} //在for循環里面定義的變量是塊級作用域
alert(i); //因為i是局部變量,所以輸出2
}
sayHello();
</script>
注:變量使用前可以不用var聲明,這樣的變量會被認為是“全局變量”,但很少這樣用
關於undefined與null
有以下幾種情況的,變量的值為undefined
1、變量定義,但沒有賦值,則變量的值為undefined
2、調用的方法沒有返回值,在返回的值為undefined
3、對象的屬性值不存在,則返回值為undefined,如:document.ddd
Example1:
var xx;
var yy=null;
if(xx==yy){
alert('相等');
}
else{
alert('不等');
}
----------------------------------------
輸出結果為相等,因為在進行if判斷時,瀏覽器會對xx及yy進行值的判斷,因為兩者都沒有具體的值,認為他們都是false。
如果if判斷中換成===[全等於符號],則輸出不等!因為===表示要求xx及yy的數據類型和值都要相同才可以!
Example2:
var xx=10
var yy='10';
if(xx==yy){
alert('相等');
}
else{
alert('不等');
}
-----------------------------------------
輸出相等,如果換成===,則輸出不等
Example3:
var n='10';
switch(n){
case 10:
alert('數字');
break;
case '10':
alert('字符串');
break;
}
輸出 字符串
switch中的判斷要考慮類型
總結:if中的判斷是判斷數值,不考慮類型