为什么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的另一个有趣之处在于它可以递增。 X = undefined x + + Y = null y + + console.log(x) // NaN .log Console.log (y) // 0
这对于为计数器设置默认数值非常有用。你有多少次在声明中把一个变量设为-1 ?
其他回答
(name is undefined)
你:你叫什么名字?(*) JavaScript:名字?名字是什么?我不知道你在说什么。你从来没提过任何名字。你在(客户端)看到其他脚本语言了吗?
name = null;
你:你叫什么名字? JavaScript:我不知道。
简而言之,未定义是指事物没有概念存在;它没有类型,在此范围内从未被引用过;Null是已知对象存在的位置,但不知道值是多少。
需要记住的一件事是,null在概念上与false或""或诸如此类的不一样,即使它们在类型转换后相等,即。
name = false;
你:你叫什么名字? 布尔值为false。
name = '';
你:你叫什么名字? JavaScript:空字符串
*: name在此上下文中的意思是一个从未定义过的变量。它可以是任何未定义的变量,然而,name是几乎任何HTML表单元素的属性。它可以追溯到很久以前,在id之前就设立了。它很有用,因为id必须是唯一的,但名称不必是唯一的。
使用null来定义没有值的东西,使用undefined当你期望一些东西可能根本没有定义。
例如,如果一个变量没有值,将其赋值为null。
var weDontHaveAValue = null;
如果你期望某些东西可能根本没有定义,例如一个可选的选项参数,使用undefined。
if (typeof args.optionalParam !== 'undefined') { }
什么是类型?
类型是对值进行分类的一种方式。下面是一个包含有问题的类型及其typeof结果的表格。
Type | Values type contains | typeof result |
Is typeof result a lie? |
---|---|---|---|
Undefined | Only: undefined |
"undefined" |
No |
Null | Only: null |
"object" |
Yes |
Object | Infinite amount of values: {} , {a: "b"} , ... |
"object" |
No |
null不是一个对象,它是一个null类型的值。
typeof操作符在说谎!它返回“object”为空在JavaScript语言中是一个错误。
我在我的开源电子书中写了一章。你可以在这里阅读https://github.com/carltheperson/advanced-js-objects
差异可以总结为以下代码片段:
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是两个不同的值。一个表示没有名称的值,另一个表示没有名称。
对于if(o), if中发生的事情如下所示:
括号o中的表达式被求值,然后if语句开始对括号中的表达式的值进行类型强制——在我们的例子中是o。
JavaScript中的Falsy(将被强制为false)值为:",null, undefined, 0和false。