为什么null在JavaScript中被认为是一个对象?
正在检查
if ( object == null )
Do something
和
if ( !object )
Do something
?
还有:
null和undefined之间的区别是什么?
为什么null在JavaScript中被认为是一个对象?
正在检查
if ( object == null )
Do something
和
if ( !object )
Do something
?
还有:
null和undefined之间的区别是什么?
当前回答
差异可以总结为以下代码片段:
alert(typeof(null)); // object
alert(typeof(undefined)); // undefined
alert(null !== undefined) //true
alert(null == undefined) //true
检查
Object == null与检查if (! Object)不同。
后者等于!布尔(对象),因为一元!运算符自动将右操作数转换为布尔型。
因为布尔(null)等于false,那么!false === true。
因此,如果对象不是null,而是false或0或"",检查将通过 因为:
alert(Boolean(null)) //false
alert(Boolean(0)) //false
alert(Boolean("")) //false
其他回答
例如窗口。someWeirdProperty是未定义的
”窗口。someWeirdProperty === null"的值为false时
”窗口。someWeirdProperty === undefined"的值为true。
此外,checkif if (!o)与检查if (o == null)是否为假并不相同。
typeof null; // object
typeof undefined; // undefined
null值表示有意不存在任何对象值。它是JavaScript的基本值之一,在布尔操作中被视为假值。
var x = null;
var y;
X被声明并定义为null
Y声明了,但没有定义。它声明时没有值,所以没有定义。
Z没有被声明,所以如果你试图使用Z,它也是未定义的。
JavaScript中许多不同的null检查的比较:
http://jsfiddle.net/aaronhoffman/DdRHB/5/
// Variables to test
var myNull = null;
var myObject = {};
var myStringEmpty = "";
var myStringWhiteSpace = " ";
var myStringHello = "hello";
var myIntZero = 0;
var myIntOne = 1;
var myBoolTrue = true;
var myBoolFalse = false;
var myUndefined;
...trim...
http://aaron-hoffman.blogspot.com/2013/04/javascript-null-checking-undefined-and.html
差异可以总结为以下代码片段:
alert(typeof(null)); // object
alert(typeof(undefined)); // undefined
alert(null !== undefined) //true
alert(null == undefined) //true
检查
Object == null与检查if (! Object)不同。
后者等于!布尔(对象),因为一元!运算符自动将右操作数转换为布尔型。
因为布尔(null)等于false,那么!false === true。
因此,如果对象不是null,而是false或0或"",检查将通过 因为:
alert(Boolean(null)) //false
alert(Boolean(0)) //false
alert(Boolean("")) //false
null和undefined之间的区别是什么??
没有定义的属性是未定义的。null是一个对象。它的类型是object。Null是一个特殊值,表示“没有值”。Undefined不是一个对象,它的类型是Undefined。
你可以声明一个变量,将其设置为null,除了你会看到“null”和“undefined”打印出来之外,行为是相同的。你甚至可以将一个未定义的变量与null进行比较,反之亦然,条件将为真:
undefined == null
null == undefined
更多细节请参考JavaScript null和undefined之间的差异。
还有你的新编辑,是的
if (object == null) does mean the same if(!object)
当测试object是否为false时,它们都只满足测试是否为false时的条件,而不满足测试是否为true时的条件
检查这里:Javascript抓住你了