javascript 的null和undefined

null 和 undefined 。
这两者表现极为相似

console.log(null==undefined);//true

但是不少地方还是有些不同

null 和 undefined在现代JS语义里面是有明确区别的:
null 表示一个值被定义了,定义为“空值”;
undefined 表示根本不存在定义。
所以设置一个值为 null 是合理的,如
objA.valueA = null;
但设置一个值为 undefined 是不合理的,如
objA.valueA = undefined; 。 应该直接使用 delete objA.valueA; 任何一个存在引用的变量值为undefined都是一件错误的事情。
这样判断一个值是否存在,就可以用
objA.valueA === undefined 。 不应使用 null 因为 undefined == null,而 null 表示该值定义为空值。
这个语义在JSON规范中被强化,这个标准中不存在 undefined 这个类型,但存在表示空值的 null 。在一些使用广泛的库(比如jQuery)中的深度拷贝函数会忽略 undefined 而不会忽略 null ,也是针对这个语义的理解。

自然在使用中还是有不少不同之处
console.log(5+undefined);//NAN
consol.log(5+null);//5 。 自然 使用number()函数强制转换时,得到的结果也是不同的

除此之外还有什么不同之处?可不仅仅是这样子。


<span id="test" data-belong="hah"></span>

$("#test").attr("data-belong",undefined);//没有发生任何改变 data-belong 的值还是 "hah"
$("#test").attr('data-belong',null);// 审查元素,我们会发现 ,data-belong这个属性值都没有了。

如果一个值没有被定义,那么它的值就是undefined ,自然根据js重复定义的概念
var str="hah";
var str=undefined;//第二次定义,这一句实际上等于  var str;
这种情况
var str="hah";
var str;//会直接跳过不执行。那上一种表示方法就能理解了。
从这里 ,$("#test").attr("data-belong",undefined);  这一句没有执行任何操作,也就解释通了。
然后再来看一下
$("#test").attr("data-belong",null);
//显然这和$("#test").attr("data-belong",""); 是不同的。
这就遇到了一个难题 ,到底该如何显示一个属性为null 的属性值 。js的处理方式,是不显示 ,由于这个没有任何意义。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值