国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

網(wǎng)頁(yè)出現undefined是什么意思?undefined與null有何區

發(fā)布時(shí)間:2022-10-24 07:19 來(lái)源:群英 閱讀:179 作者:群英 欄目: 主機資訊 歡迎投稿:712375056

最近上網(wǎng)出現了一個(gè)奇怪的現象,瀏覽百度貼吧的時(shí)候,出現undefined,那么這個(gè)undefined到底是什么意思呢?

    

    undefined是一個(gè)特殊值,通常用于指示變量尚未賦值。對未定義值的引用返回特殊值。其實(shí)大多數計算機語(yǔ)言,只有一個(gè)表示"無(wú)"的值,比如,C語(yǔ)言的NULL,Java語(yǔ)言的null,Python語(yǔ)言的None,Ruby語(yǔ)言的nil。

    但有一種語(yǔ)言是例外的,JavaScript語(yǔ)言居然有兩個(gè)表示"無(wú)"的值:undefined和null。這是為什么?undefined 和null有什么區別呢?
 
    一、相似性

    在JavaScript中,將一個(gè)變量賦值為undefined或null,實(shí)話(huà)說(shuō),二者幾乎沒(méi)區別。
 
    var a = undefined;
 
    var a = null;
 
    上面代碼中,a變量分別被賦值為undefined和null,這兩種寫(xiě)法效果幾乎是一樣的。

    undefined和null在if語(yǔ)句中,都會(huì )被自動(dòng)轉為false,相等運算符甚至直接報告兩者相等。
 
    if (!undefined)
    console.log('undefined is false');
    // undefined is false
 
    if (!null)
    console.log('null is false');
    // null is false
 
    undefined == null
    // true
 
    上面代碼說(shuō)明,兩者的行為是何等相似!

    既然undefined和null的含義與用法都差不多,為什么要同時(shí)設置兩個(gè)這樣的值?
 
    二、真相揭秘

    原來(lái),這與JavaScript的歷史有關(guān)。1995年JavaScript誕生時(shí),最初像Java一樣,只設置了null作為表示"無(wú)"的值。但是,JavaScript的設計者Brendan Eich,覺(jué)得這樣做還不夠,有兩個(gè)原因。

    首先,null像在Java里一樣,被當成一個(gè)對象。但是,JavaScript的數據類(lèi)型分成原始類(lèi)型(primitive)和合成類(lèi)型(complex)兩大類(lèi),Brendan Eich覺(jué)得表示"無(wú)"的值最好不是對象。

    其次,JavaScript的最初版本沒(méi)有包括錯誤處理機制,發(fā)生數據類(lèi)型不匹配時(shí),往往是自動(dòng)轉換類(lèi)型或者默默地失敗。Brendan Eich覺(jué)得,如果null自動(dòng)轉為0,很不容易發(fā)現錯誤。
   
    因此,Brendan Eich又設計了一個(gè)undefined。
 
    三、目前的用法

    但是,上面這樣的區分,在實(shí)踐中很快就被證明不可行。目前,null和undefined基本是同義的,只有一些細微的差別。

    null表示"沒(méi)有對象",即該處不應該有值。典型用法是:

  (1) 作為函數的參數,表示該函數的參數不是對象。

  (2) 作為對象原型鏈的終點(diǎn)。
 
    Object.getPrototypeOf(Object.prototype)
    // null
 
    undefined表示"缺少值",就是此處應該有一個(gè)值,但是還沒(méi)有定義。典型用法是:

  (1)變量被聲明了,但沒(méi)有賦值時(shí),就等于undefined。

  (2) 調用函數時(shí),應該提供的參數沒(méi)有提供,該參數等于undefined。

  (3)對象沒(méi)有賦值的屬性,該屬性的值為undefined。

  (4)函數沒(méi)有返回值時(shí),默認返回undefined。
 
    var i;
    i // undefined
 
    function f(x){console.log(x)}
    f() // undefined
 
    var  o = new Object();
    o.p // undefined
 
    var x = f();
    x // undefined

來(lái)源鏈接:https://www.qy.cn/zx/idc/829.html

本站聲明:網(wǎng)站內容來(lái)源于網(wǎng)絡(luò ),如有侵權,請聯(lián)系我們,我們將及時(shí)處理。

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

内射毛片内射国产夫妻| 第一亚洲中文久久精品无码| 亚洲妇女水蜜桃AV网网站| 美女裸体视频全免费| 色翁荡息又大又硬又粗又视频软件| 日韩人妻一区二区三区免费|