null undefined NaN的区别和理解

一般来说,null表示空对象 undefined表示空非对象 NaN是Number中的特殊数值,非Number

区别:

  1. 变量没有赋值: undefined.
  2. 有一个对象(Object),现在不想赋值,给它null(推荐) 有一个非对象,不想给他赋值,给他undefined(推荐).
  3. NaN是一种特殊的number,是"Not a Number"的简写

not defined

 console.log(a); // 报错:a is not defined 终止运行

个人理解: not defined可以翻译为未定义的,上面代码中的a没有被定义,所以会报错并提示not defined.

Undefined

  • 一个定义了但未赋值的变量:
var a;
console.log(a); // undefined
  • 一个定义了但把值赋为undefined的变量:
var a = undefined;
console.log(a); // undefined
  • 一个对象没有赋值的属性
console.log(window.a); // undefined
var a = [];
console.log(a.b); // undefined
var a = {};
console.log(a.b); // undefined
  • 一个没有返回值的函数:
function a() {}
console.log(a()) // undefined

个人理解:Undefined表示 “缺少值”,就是此处应该有一个值,但是还没有定义.典型用法是:

(1) 变量被声明了,但没有赋值时,就等于undefined.
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined.
(3) 对象没有赋值的属性,该属性的值为undefined.
(4) 函数没有返回值时,默认返回undefined.

Null

var a = document.getElementById('main');
console.log(a); // null

null表示"没有对象",即该处不应该有值.典型用法是:

(1) 作为函数的参数,表示该函数的参数不是对象.
(2) 作为对象原型链的终点.

个人理解: 上面的代码中如果实际上没有id为main的元素,a则是null,所以null是真正不存在的东西.另外null是一个只有一个值的特殊类型.表示一个空对象引用,用typeof检测返回是Object.第二种的Undefined是派生自null,所以有undefined==null.

NaN

var a;
console.log(a*2); // NaN
isNaN('123') // false
isNaN(123) // false
isNaN(Number('as')) // true

个人理解: NaN"Not a Number"的简写,从字面上看为不是数字的意思,当运算无法返回正确的数值时,就会返回NaN值.也可以理解一下W3C给出的定义和用法:NaN 属性是代表非数字值的特殊值.该属性用于指示某个值不是数字.可以把 Number 对象设置为该值,来指示其不是数字值.

注意: Null是一种特殊的Object;NaN是一种特殊的number.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值