空對象未定義,像這樣var empty_obj = {}。 未定義將是錯誤的。但我注意到, empty_obj || 3將返回empty_obj而不是3. 這是爲什麼?Javascript:是一個空虛的對象是一個虛假的對象嗎?
回答
空對象是而不是未定義。
console.log({} === undefined); // false
console.log(typeof {}); // object
它是一個truthy值:
if ({}) console.log('truthy'); // truthy
它甚至有一些性質:
console.log(typeof {}.hasOwnProperty); // function
唯一在JS falsy值0
,false
,null
,undefined
,空字符串,和NaN
。
您可能會對var =
語句的返回值感到困惑。這些將始終顯示如Chrome瀏覽器控制檯undefined
:
> var obj = {}
undefined
> var x = 100
undefined
> var y = "potato"
undefined
只是因爲不確定,並不意味着價值var =
語句返回是不確定的。雖然,沒有var
,作業做返回值被分配:
> obj = {}
{}
> x = 100
100
> y = "potato"
"potato"
爲什麼'{} == true'返回false? –
@KevinBowersox「truthy」!=='== true'。 '{} == false'也返回false。 '「一些字符串」== true「也返回false。 – Doorknob
@ Doorknob明白!謝謝。 –
空對象沒有未定義的,只有類型undefined
的對象未定義:
[[email protected]~]node
> undefined == {}
false
> typeof {}
'object'
> typeof undefined
'undefined'
它當不使用嚴格模式時可以重新定義undefined
。使用typeof
或void 0
檢查更安全。
您已將empty_obj定義爲碰巧沒有任何已定義屬性但已定義的對象。出於這個原因,empty_obj會導致分配中的真實和返回。
var myobj = {}; //defined
var myobj2; //undefined
if(myobj == undefined)
{
console.log("myobj is undefined");
}
if(myobj2 == undefined)
{
console.log("the 2nd one is undefined");
}
if(myobj)
{
console.log("myobj isn't falsy");
}
if(myobj2)
{
console.log("myobj2 isn't false");
}
- 1. asp.net C#SelectedItem.Selected =虛假對象refrence未設置爲一個對象
- 2. JavaScript的空值 - 它是一個對象
- 3. 這是一個對象嗎?
- 4. 是int []一個對象嗎?
- 5. JSONRequest是一個全局JavaScript對象嗎?
- 6. 與虛擬對象,而不是這個
- 7. JS:對象的空虛
- 8. 爲什麼一個空的javascript對象既不是真也是假?
- 9. 打印的對象是一個數組,它是一個對象
- 10. int是Java中的一個對象嗎?
- 11. Javascript 1 === 1是虛假的
- 12. 的javascript:對象不是一個函數
- 13. 使用Javascript創建一個虛擬的交互對象
- 14. 的Java比較兩個相同的對象提供虛假
- 15. Python庫創建存根/虛假對象
- 16. 確定是否一個Javascript對象是一個「複雜」的對象或只是一個字符串
- 17. 從對象,它是一個對象
- 18. 訪問對象是另一個對象的屬性 - 使用Javascript
- 19. 另一個對象內的JavaScript對象
- 20. Imagick setResolution()讀取一個Imagick對象,但不是一個空的Imagick對象
- 21. 重寫虛擬void方法時返回一個對象嗎? C++
- 22. 這是瀏覽器對JavaScript的虛擬機的一種嗎?
- 23. 是否有訪問一個空對象
- 24. 陣營this.props是一個空對象
- 25. 錯誤:空不是一個對象
- 26. 空不是一個對象,使下拉
- 27. 檢查一個對象是否爲空
- 28. ObjectDataSource SelectParameter是一個對象嗎?
- 29. 選擇器是一個對象嗎?
- 30. 引用類型是一個對象嗎?
爲什麼它應該是假的?它完全合理的讓所有的對象都是真的,事實上許多其他語言都會這樣做。 – hugomg
嘗試'if(Object.keys(obj).length)'檢查是否爲空 – elclanrs