空对象未定义,像这样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