[size=11px;]
很多人或许对null和undefined这两个关键词比较困惑。
希望看了这篇文章之后可以轻松的找到关键点。
做个小实验
[code="js"]alert(null == undefined); // true
alert(null === undefined); //false
这个小实验说明,如果这两个特殊类型都进行向下转型然后对比值的话是相等的。但是类型确实是不相等的,也就是说,他们两个实际上不是一个东西。
再做个小实验
[code="js"]function a(x) {
// 判断x是否传递
if(x == null) {
console.log("yes");
}else {
console.log("no");
}
};
a();
print : yes
这个例子的本意是判断参数x 是否传递, OK 我们不去传递,结果打印出了yes。我们想当然的认为好像这样是正确的做法。
大错特错了!what? 为什么?
好吧 我们换一种方式
[code="js"]a(null);
print: yes.
它依然打印出yes。或许你会觉得,这样很好啊,一箭双雕。又能判断有没有传递又能判断参数是不是空。
好吧,那我再举个例子!
[code="js"]function m1() {
alert("没有参数, 支线1");
};
function m2(x) {
alert("有参数,需要做操作, 支线2");
};
function sbss(x) {
// 本意判断没有传递
if(x == null) {
m1();
}else {
m2(x);
}
};
我发现我永远无法执行m2,这显然是不对的!
这时候我使用undefined来判断,效果就截然不同。
这就是为什么很多书上说为什么不推荐使用null来判断对象是否存在。对于对象存在的概念,再次引入一个小例子,将清楚的说明这个问题:
[code="js"]if(a === undefined) {
alert("对象不存在");
}
上面的小片段我们并没有定义a 所以他会打印出“对象不存在”
[code="js"]var a;
if(a === undefined) {
alert("对象不存在");
}
至于这个,虽然我们定义了a, 但是并没有初始化, 没有初始化虽然他确实再上下文中占了一个位置,但是它没有初始化,这个时候系统依然认为他不是一个存在的对象。 所以依然会打印出“对象不存在”, 其实这是一个bug, 如何规避这个bug? 很简单。
[code="js"]var a == null;
if(a === undefined) {
alert("对象不存在");
}
这样,我们就不会再打印出“对象不存在”这句烦人的话了。
上述就是null 和 undefined 的区别了,欢迎反驳。
[/size]
分享到:
相关推荐
JavaScript 中的 undefined、null、NaN 的区别 在 JavaScript 中,undefined、null、NaN 是三个经常被混淆的概念,但它们有着不同的含义和用途。今天,我们将深入探讨这三个概念的区别和应用。 undefined 在 ...
理解javascript中undefined和null的区别
JavaScript中Null与Undefined的区别解析主要涉及两种特殊数据类型:Null和Undefined。这两种类型是JavaScript中的原始类型,它们经常会使开发者混淆,尤其是在变量的赋值和比较操作中。本文将通过多个实例,详细解释...
JavaScript中undefined和null的区别 JavaScript两个表示”无”的值:undefined和null。我在平时只是null用的多一点,undefined只是在报错中经常遇到。下面针对这两个数据类型的异同做一下详细的比较。 1.undefined和...
总的来说,理解`undefined`和`null`的区别是JavaScript编程中的关键。`undefined`常用于表示变量声明但未赋值,而`null`则是一个明确的空对象引用。在编写代码时,明确初始化变量并合理使用`null`可以帮助减少潜在的...
== undefined 那么这两者到底有啥区别呢? 请听俺娓娓道来… null 这是一个对象,但是为空。因为是对象,所以 typeof null 返回 ‘object’ 。 null 是 JavaScript 保留关键字。 null 参与数值运算时其值会自动转换...
null和undefined属于js中两种不同的基本数据类型,都可以表示“没有”,含义非常相似。将一个变量赋值为undefined或null,老实说,语法效果几乎没区别。并且在if语句的判断条件中,它们都会自动转为false,相等...
js判断undefined类型 今天使用showModalDialog打开页面,返回值时。当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined所以自作聪明判断 var reValue=window.showModalDialog(“”,””,””); ...
JavaScript中存在2个代表信息不存在的特殊值:null和undefined。个人认为可以从以下角度来理解这两个特殊值之间的区别: 1.null代表有存储信息的容器(比如之前被赋过值的变量),但该容器中的内容为空。 2.undefined...
在JavaScript编程中,undefined和null是两种特殊的值,它们在处理变量和对象时扮演着重要的角色。尽管它们都表示“没有值”的概念,但它们之间存在着一些关键的区别。本文将深入探讨undefined和null的含义、用途以及...
在JavaScript(JS)编程中,`undefined` 和 `null` 是两种不同的特殊值,它们各自表示不同的含义。理解和正确地判断这两个值对于编写健壮的JavaScript代码至关重要。在这篇文章中,我们将深入探讨如何在JavaScript中...
在JavaScript编程语言中,null和undefined是两个非常基础且常用的特殊值。尽管它们看起来相似,但它们在JavaScript中有着本质上的区别和各自的应用场景。本文将详细探讨这两个特殊值的相同点和不同点,以及在实际...
在JavaScript编程语言中,`undefined`和`null`是两种不同的数据类型,它们虽然在某些情况下可能被视为等价,但有着本质的区别。了解这两者的差异对于编写健壮的JavaScript代码至关重要。 首先,`undefined`是一种...
在JavaScript编程语言中,`null`和`undefined`是两个非常基础且重要的概念。虽然它们经常被用来表示“无值”或“空值”,但它们之间还是存在着一些关键性的区别。本文将详细探讨这两个概念的含义、用法以及它们之间...
在JavaScript代码实践中,了解null和undefined的区别是非常重要的,因为它们经常在程序中被使用。例如,在判断一个对象是否已被正确初始化时,我们可能会使用if(!object)这样的语句。此时,如果对象值是null,则被视...