为什么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之间的区别是什么?
当前回答
Null是一个对象。它的类型是null。Undefined不是一个对象;其类型是未定义的。
其他回答
Null是一个对象。它的类型是null。Undefined不是一个对象;其类型是未定义的。
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抓住你了
null和undefined的主要区别在于null表示 一个缺失的对象,而undefined表示变量的未初始化状态。
你可以认为null是一个未定义的对象,但未定义只是未定义的 因为它的类型没有定义。
let a;
console.log(a); //undefined, since it is declared but not initialized
console.log(null == undefined) //true
console.log(null === undefined) // false
console.log(typeof null) //object
console.log(typeof undefined) //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
未定义和未定义不是一回事。
age;
年龄的价值是什么?
电脑:好的,让我查一下我的内存/参考表.....在这一点上(你问的时间),我没有看到任何标识符名为年龄,不在这个范围/上下文或任何父范围/上下文;我不知道年龄。也许稍后我会遇到一个指令,将该标识符添加到内存中,但它现在不存在。
var age;
你:年龄的价值是什么;
电脑:好的,检查一下我的记忆……我在引用表中看到一个标识符,它的名字是age,但在我添加它的时候,没有值或指针或任何东西被分配给它,所以我不知道;你可以认为它(年龄)空了/什么都没有/没用。
var age = null;
你:年龄的价值是什么;
电脑:好的,检查一下我的记忆……我看到年龄在我的参考表:它是空的。基本上,它是nothing/empty,你不能用这个值做任何事情;这是故意的。
现在,我可能不应该这样解释,但希望这是有意义的。
我明白为什么null被设计成JS中的一个对象,我个人也喜欢这样。
Null和undefined实际上意味着同样的事情:空/无。区别在于它在概念上是如何使用的。
我认为null是开发者想要的虚无;一些东西被设为null是为了不代表任何东西。我将未定义视为计算机意图的虚无;开发者/用户无意中发现了一些没有价值的东西。
例如,如果你从库/sdk调用一个函数并返回null,你几乎可以确定这是由开发人员/作者故意设计的;他们特别想表明虚无。
另见- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/null