淺談JS中的變量及作用域、undefined與null


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中的判斷是判斷數值,不考慮類型



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM