回答
它有助於理解值和變量之間的差異。
變量是包含值的存儲位置。
null
意味着存儲位置不包含任何東西(但空本身只是一種特殊的價值)。仔細閱讀最後一句。 null
是什麼和null
的含義有什麼區別。99%的時間你只關心null的含義。
Undefined
指可變(相對於所述值)不存在。
例如,它可以準備一個全局變量用於代碼的更多部分。
如果你用var iNeedThisEverywhere = null;
開始你的代碼,那麼你可以在代碼中使用更多的對象/動作,但是如果你不這樣做,那麼這個變量將不會在整個代碼中共享。
當然,在代碼中你實際上會在某個地方放置一些東西,但是由於你在一開始就定義了這個變量,所以它會被進一步共享。
變量持有null保存對名爲null的「黑洞」的引用。
10 + 10 + null = null
空是歷史與數據庫相關,http://en.wikipedia.org/wiki/Null_(SQL) (糾正我,如果我錯了這裏)
的變量沒有啓動(未知)是不確定的。
問候, /噸
那麼,在Chrome中'10 + 10 + null == 20'。 – pimvdb 2011-04-10 19:49:42
但是,如果你不知道這個值,爲什麼要聲明呢? – 0x499602D2 2011-04-10 21:32:51
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();
}
我這樣做是因爲它更容易看看對象的屬性是否正確。
但是,如果你不知道這個值,爲什麼要聲明呢? – 0x499602D2 2011-04-10 20:43:21
那麼,通常我會說「因爲範圍」 - 如果你在那裏聲明變量,那麼它可以在'myObject'內的任何地方訪問。但是,在這種情況下並不重要。我這樣做是因爲我想在我的定義的頂部清楚地看到我的對象屬性。 – typeof 2011-04-10 21:35:32
如果變量未知或未在當前範圍內初始化,則爲undefined
。
如果你想使用一個變量,並指出它有一個無效的值,例如你可能想要分配它null
因爲訪問一個未定義的變量會引發錯誤,如果你嘗試使用它(儘管檢查它是否未定義)。
如果有些東西未定義,您還可以將其添加到對象中。如果一個變量被定義但包含null,那麼你知道這個變量可能已經被程序的另一部分使用了。
- 1. 在javascript中爲什麼我們使用var來聲明變量?
- 2. 爲什麼我們在java中聲明變量爲private
- 3. 爲什麼null == undefined在javascript中爲true
- 4. 爲什麼在聲明中說int * p = NULL,但是在測試中p!= NULL,爲什麼不能匹配聲明的* p!= NULL?
- 5. 爲什麼open在fcntl.h中聲明,而close在unistd.h中聲明?
- 6. 爲什麼我們在派生類中使用使用聲明?
- 7. 爲什麼我們在C中有main的多個聲明?
- 8. 爲什麼我們不能在togglestatus函數中聲明this.render?
- 9. 爲什麼我們要在普通類中聲明靜態類?
- 10. IBAction - 爲什麼要在頭文件中聲明它們
- 11. 爲什麼我們在字體聲明中包含TTF文件?
- 12. 爲什麼要在$(function(){...})中聲明?
- 13. 爲什麼JavaScript中的「」== [null]爲true?
- 14. 爲什麼他們檢查WeakReference爲null?
- 15. Bash如果聲明爲null
- 16. 爲什麼我們需要爲IMessenger.Subscribe()明確設置收件人?
- 17. 爲什麼變量在Javascript中的函數之前聲明
- 18. 爲什麼在Javascript中包含變量聲明for循環?
- 19. 爲什麼jslint喜歡在JavaScript中分割變量聲明?
- 20. 爲什麼在javascript中留下一個未聲明的變量?
- 21. 當我們在JavaScript中聲明Array(4)時會發生什麼?
- 22. 爲什麼我們無法從jsp聲明中訪問請求?
- 23. 爲什麼WebMethod聲明爲靜態?
- 24. 爲什麼main不被聲明爲extern
- 25. 爲什麼WebFrameLoadDelegate被視爲未聲明?
- 26. 爲什麼我們在JavaScript中關閉?
- 27. 爲什麼在相同的頭文件中聲明一個類爲類聲明
- 28. 在JavaScript中,「聲明職位」是什麼?
- 29. 爲什麼在void/int聲明後const?
- 30. 爲什麼人們使用if(null == var)風格測試?
任何示例代碼? – BoltClock 2011-04-10 18:13:26
QuestionExists()[http://stackoverflow.com/questions/461966/why-is-there-a-null-value-in-javascript](http://stackoverflow.com/questions/461966/why-is-那麼在JavaScript中有一個空值) – 2011-04-10 18:15:15