JavaScript中的undefined与null

一、转载声明:

文章观点源于博客“阮一峰的网络日志” “undefined与null的区别” 一文以及评论。

注:本博客仅用于自身学习的记录

二、关于undefined==null为true:

//参考“邵天宇Soy的解释”

JavaScript规范中提到:
要比较相等性之前,不能将 null 和 undefined 转换成其他任何值,并且规定null 和 undefined 是相等的。null 和 undefined都代表着无效的值。

另外,查阅ECMAScript Language Specification发现第11.9.3.2和第11.9.3.3中有描述undefined==null为true

下图为描述内容:

ECMA中的描述


三、undefined由来及合理性:

  1. JavaScript诞生时,最初像Java一样,只设置了null作为表示"无"的值,且null可以自动转为0;
//示例
Number(null);  // 0 此为数字0,数据类型"number"
  1. null被视作一个空对象,但JavaScript的设计者Brendan Eich觉得表示"无"的值最好不是对象;
  2. JavaScript 是一门动态类型语言,成员除了表示存在的空值外,还有可能根本就不存在(因为存不存在只在运行期才知道),所以这就要一个值(即undefined)来表示对某成员的getter 是取不到值的

四、undefined和null的对比:

  1. null 表示一个被定义了,定义为“空值”;
典型用法:
    (1) 作为函数的参数,表示该函数的参数不是对象。
    (2) 作为对象原型链的终点。 
//示例
Object.getPrototypeOf(Object.prototype)//null
  1. undefined 表示根本不存在定义
典型用法:
   (1)变量被声明了,但没有赋值时,就等于undefined。
   (2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
   (3)对象没有赋值的属性,该属性的值为undefined。 
   (4)函数没有返回值时,默认返回undefined。
//示例1
var i ;
console.log(i) //undefined

//示例2
function f(x){console.log(x)}
f() // undefined

//示例3
var  obj = new Object();
console.log(obj.p ) // undefined

//示例4
var x = f(); //注意:示例2已定义函数f()
x // undefined  

五、补充

1、关于null的一些测试

//示例1  null数据类型
typeof null;  //"object"

//示例2  null与正数及负数的大小比较
null > -1;  //true
null < 1;  //true

//示例3  null与0的大小比较
null > 0;  //false
null < 0;  //false
null == 0;  //false

//示例4  null数据类型转换
Number(null);  //0 此为数字0,数据类型"number"

2、关于undefined的一些测试

// 示例1  undefined 数据类型
typeof undefined;  // "undefined"
// 示例2   undefined 数据类型转换
Number(undefined); // NaN

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值