最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解JS中的變量及作用域、undefined與null

 更新時間:2014年03月04日 10:10:12   投稿:jingxian  
本篇文章主要是對JS中的變量及作用域、undefined與null進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對大家有所幫助

1、Javascript變量作用域

javascript中,變量主要分為局部變量和全局變量兩種,對應(yīng)的作用域也是局部作用域和全局作用域。

1 局部變量和作用域
局部變量一般在函數(shù)體內(nèi)部聲明使用:

function func(){
  var i=12;//局部變量
  ......
}

局部變量的作用域在聲明這個變量的函數(shù)體范圍內(nèi)使用。
局部變量的聲明周期從函數(shù)被調(diào)用執(zhí)行開始初始化,在函數(shù)調(diào)用執(zhí)行完畢之后被銷毀。

2、全局變量和作用域

全局變量一般在函數(shù)體外面聲明:

var i=12;//全局變量
function func(){
  ......
}

還有一種沒有聲明而直接使用的變量,默認(rèn)為全局變量:

function func(){
  i=12;//沒有被聲明(使用var 關(guān)鍵字聲明),默認(rèn)為全局變量
}

全局變量在當(dāng)前頁面中所有的腳本和方法中都可以使用,作用域為當(dāng)前頁面腳本中。
全局變量的聲明周期在變量被初始化時被創(chuàng)建,在當(dāng)前頁面關(guān)閉的時候被銷毀。

2、typeof關(guān)鍵字

typeof關(guān)鍵字主要用來檢測變量的數(shù)據(jù)類型,JavaScript中主要的數(shù)據(jù)類型有string、number、Boolean、object等

console.log(typeof 'str');//string
console.log(typeof 23);//number
console.log(typeof false);//boolean
console.log(typeof [1,3,12]);//object
console.log(typeof {name:'jack',age:12});//object
console.log(typeof new Date());//object

注意: js中的數(shù)組、json對象都是object數(shù)據(jù)類型的

3、null和undefined

null和undefined在JavaScript中經(jīng)常出現(xiàn),表示一個變量的值為空或者是一個變量未被定義。在表示值的時候,都可以表示為空值,但是在數(shù)據(jù)類型方面還是不一樣。

console.log(typeof null);//object
var persion = null;
console.log(persion);//null

console.log(typeof undefined);//undefined
var persion2;
console.log(persion2);//undefined

null的數(shù)據(jù)類型為object,undefined的數(shù)據(jù)類型就是undefined。
變量聲明,值為null,變量值為null;變量只聲明,沒有賦值,值為undefined。
再看一組對比:

console.log(null==undefined);//true 值相等
console.log(null===undefined);//false  類型不相等

這就可以看出來,null和undefined的表示值的時候,都表示空;null的數(shù)據(jù)類型為object,undefined的數(shù)據(jù)類型就是undefined。只聲明而沒有初始化的值都是undefined。

下面是補(bǔ)充

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,在方法內(nèi)部,不存在塊級作用域,在C#中就不可以了?。。?

  for(var i=0;i<2;i++){
    alert(i)
  } //在for循環(huán)里面定義的變量是塊級作用域
  alert(i); //因為i是局部變量,所以輸出2

}
sayHello();
</script>

注:變量使用前可以不用var聲明,這樣的變量會被認(rèn)為是“全局變量”,但很少這樣用

關(guān)于undefined與null

有以下幾種情況的,變量的值為undefined
1、變量定義,但沒有賦值,則變量的值為undefined
2、調(diào)用的方法沒有返回值,在返回的值為undefined
3、對象的屬性值不存在,則返回值為undefined,如:document.ddd

Example1:

var xx;
var yy=null;

if(xx==yy){

  alert('相等');

}

else{

  alert('不等');
}

輸出結(jié)果為相等,因為在進(jìn)行if判斷時,瀏覽器會對xx及yy進(jìn)行值的判斷,因為兩者都沒有具體的值,認(rèn)為他們都是false。
如果if判斷中換成===[全等于符號],則輸出不等!因為===表示要求xx及yy的數(shù)據(jù)類型和值都要相同才可以!
 
Example2:

var xx=10
var yy='10';

if(xx==yy){

  alert('相等');
}

else{

  alert('不等');
}

輸出相等,如果換成===,則輸出不等

Example3:

var n='10';
switch(n){
  case 10:

    alert('數(shù)字');
  break;

  case '10':

    alert('字符串');
  break;
}

輸出 字符串
switch中的判斷要考慮類型

總結(jié):if中的判斷是判斷數(shù)值,不考慮類型

相關(guān)文章

  • js實現(xiàn)圖片上傳預(yù)覽原理分析

    js實現(xiàn)圖片上傳預(yù)覽原理分析

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)圖片上傳預(yù)覽的原理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • 微信小程序input框中加入小圖標(biāo)的實現(xiàn)方法

    微信小程序input框中加入小圖標(biāo)的實現(xiàn)方法

    這篇文章主要介紹了微信小程序input框中加入小圖標(biāo)的實現(xiàn)方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • 深入了解JavaScript中的垃圾回收機(jī)制

    深入了解JavaScript中的垃圾回收機(jī)制

    JavaScript中的垃圾回收機(jī)制負(fù)責(zé)自動管理內(nèi)存,回收不再使用的對象所占用的內(nèi)存空間。本文主要介紹了JS中垃圾回收機(jī)制的相關(guān)知識,需要的可以參考一下
    2023-04-04
  • JavaScript+html5 canvas繪制的小人效果

    JavaScript+html5 canvas繪制的小人效果

    這篇文章主要介紹了JavaScript+html5 canvas繪制的小人效果,涉及JavaScript結(jié)合html5 canvas圖形繪制及顏色隨機(jī)填充的技巧,需要的朋友可以參考下
    2016-01-01
  • 使用layer.msg 時間設(shè)置不起作用的解決方法

    使用layer.msg 時間設(shè)置不起作用的解決方法

    今天小編就為大家分享一篇使用layer.msg 時間設(shè)置不起作用的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • javascript校驗價格合法性實例(必須輸入2位小數(shù))

    javascript校驗價格合法性實例(必須輸入2位小數(shù))

    這篇文章主要介紹了javascript校驗價格合法性實例,其中價格必須是數(shù)字且必須輸入2位小數(shù),需要的朋友可以參考下
    2014-05-05
  • JS實現(xiàn)根據(jù)用戶輸入分鐘進(jìn)行倒計時功能

    JS實現(xiàn)根據(jù)用戶輸入分鐘進(jìn)行倒計時功能

    倒計時功能大家無論在各大網(wǎng)站都可以看到,今天小編給大家分享一段基于js實現(xiàn)的根據(jù)用戶輸入分鐘進(jìn)行倒計時功能,非常不錯,需要的朋友參考下吧
    2016-11-11
  • 利用xlsx.js讀取excel文件的詳細(xì)過程

    利用xlsx.js讀取excel文件的詳細(xì)過程

    如果你需要在瀏覽器端處理Excel文件,那么xlsx.js可能是一個不錯的選擇,這篇文章主要介紹了利用xlsx.js讀取excel文件的詳細(xì)過程,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-04-04
  • JavaScript使用Fetch的方法詳解

    JavaScript使用Fetch的方法詳解

    Fetch?API提供了一個JavaScript接口,用于訪問和操縱HTTP管道的部分。它還提供了一個全局?fetch()方法,該方法提供了一種簡單,合理的方式來跨網(wǎng)絡(luò)異步獲取資源。本文將詳解JS如何使用Fetch,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • JavaScript實現(xiàn)一個帶AI的井字棋游戲源碼

    JavaScript實現(xiàn)一個帶AI的井字棋游戲源碼

    這篇文章主要介紹了基于JavaScript實現(xiàn)一個帶AI的井字棋游戲源碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-05-05

最新評論

雷波县| 缙云县| 南宫市| 平遥县| 辽宁省| 阿城市| 任丘市| 增城市| 怀远县| 涿州市| 宣威市| 财经| 九寨沟县| 宕昌县| 宜黄县| 十堰市| 温宿县| 兴隆县| 绥中县| 嘉善县| 米泉市| 苗栗市| 津南区| 额济纳旗| 凤凰县| 华坪县| 麦盖提县| 山东省| 松滋市| 宜昌市| 青浦区| 绍兴县| 汾阳市| 西乡县| 灵台县| 双牌县| 黎川县| 镇沅| 疏附县| 肃南| 津市市|