为什么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来定义没有值的东西,使用undefined当你期望一些东西可能根本没有定义。
例如,如果一个变量没有值,将其赋值为null。
var weDontHaveAValue = null;
如果你期望某些东西可能根本没有定义,例如一个可选的选项参数,使用undefined。
if (typeof args.optionalParam !== 'undefined') { }
其他回答
看看这个:
<script>
function f(a){
alert(typeof(a));
if (a==null) alert('null');
a?alert(true):alert(false);
}
</script>
//return:
<button onclick="f()">nothing</button> //undefined null false
<button onclick="f(null)">null</button> //object null false
<button onclick="f('')">empty</button> //string false
<button onclick="f(0)">zero</button> //number false
<button onclick="f(1)">int</button> //number true
<button onclick="f('x')">str</button> //string true
与未定义相比,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必须是唯一的,但名称不必是唯一的。
例如窗口。someWeirdProperty是未定义的
”窗口。someWeirdProperty === null"的值为false时
”窗口。someWeirdProperty === undefined"的值为true。
此外,checkif if (!o)与检查if (o == null)是否为假并不相同。
Null和undefined对于值相等都是false (Null ==undefined):它们都崩溃为布尔值false。它们不是同一个对象(null!==undefined)。
Undefined是全局对象(浏览器中的“window”)的一个属性,但它是一个基本类型,而不是对象本身。它是未初始化的变量和函数的默认值,没有返回语句。
null是Object的一个实例。null用于返回集合对象以指示空结果的DOM方法,该方法提供false值而不指示错误。