2011-04-10 56 views

回答

6

它有助於理解值和變量之間的差異。

變量是包含值的存儲位置。

null意味着存儲位置不包含任何東西(但空本身只是一種特殊的價值)。仔細閱讀最後一句。 null是什麼和null的含義有什麼區別。99%的時間你只關心null的含義。

Undefined可變(相對於所述)不存在。

+1

雖然可以將變量設置爲「undefined」,但這不是一個好習慣。 – pimvdb 2011-04-10 19:48:59

+1

沒錯,我沒有提及變量被定義的含義。在JS中,一個變量被定義爲它具有某種類型(與流行觀點相反,JS是強烈類型的......強/弱二分法意味着什麼)。將一個變量設置爲'undefined'會剝離它的類型。 – 2011-04-10 20:09:18

+0

如果我錯了,請糾正我,但在兩種情況下,它的類型都是'undefined':http://jsfiddle.net/xwxgB/。 – pimvdb 2011-04-10 20:51:01

0

例如,它可以準備一個全局變量用於代碼的更多部分。

如果你用var iNeedThisEverywhere = null;開始你的代碼,那麼你可以在代碼中使用更多的對象/動作,但是如果你不這樣做,那麼這個變量將不會在整個代碼中共享。

當然,在代碼中你實際上會在某個地方放置一些東西,但是由於你在一開始就定義了這個變量,所以它會被進一步共享。

0

變量持有null保存對名爲null的「黑洞」的引用。

10 + 10 + null = null 

空是歷史與數據庫相關,http://en.wikipedia.org/wiki/Null_(SQL) (糾正我,如果我錯了這裏)

的變量沒有啓動(未知)是不確定的。

問候, /噸

+1

那麼,在Chrome中'10 + 10 + null == 20'。 – pimvdb 2011-04-10 19:49:42

+0

但是,如果你不知道這個值,爲什麼要聲明呢? – 0x499602D2 2011-04-10 21:32:51

2

null是一個對象創建變量的時候,當你沒有價值但你可以使用:

var myVal = null; 

當你這樣做,你也可以用它檢查是否定義:

// null is a falsy value 
if(!myVal) { 
    myVal = 'some value'; 
} 

我不會這樣使用它,通常情況下。它很簡單,使用'undefined',而不是:

var myVal; // this is undefined 

它仍然作爲一個虛假價值。

創建對象

當你在JavaScript中創建對象,我喜歡我的目標函數的頂部聲明我的所有對象的屬性:

function myObject() { 
    // declare public object properties 
    this.myProp = null; 
    this.myProp2 = null; 

    this.init = function() { 
     // ... instantiate all object properties 
    }; 
    this.init(); 
} 

我這樣做是因爲它更容易看看對象的屬性是否正確。

+1

但是,如果你不知道這個值,爲什麼要聲明呢? – 0x499602D2 2011-04-10 20:43:21

+0

那麼,通常我會說「因爲範圍」 - 如果你在那裏聲明變量,那麼它可以在'myObject'內的任何地方訪問。但是,在這種情況下並不重要。我這樣做是因爲我想在我的定義的頂部清楚地看到我的對象屬性。 – typeof 2011-04-10 21:35:32

1

如果變量未知或未在當前範圍內初始化,則爲undefined

如果你想使用一個變量,並指出它有一個無效的值,例如你可能想要分配它null因爲訪問一個未定義的變量會引發錯誤,如果你嘗試使用它(儘管檢查它是否未定義)。

如果有些東西未定義,您還可以將其添加到對象中。如果一個變量被定義但包含null,那麼你知道這個變量可能已經被程序的另一部分使用了。

相關問題