【3分钟带你学】null和undefined

为什么 null的类型也是object?

​ 这是由于历史原因造成的。 1995年JavaScript语言的第一版,当时,只设计了五种数据类型(对象、 整数、 浮点数、字符串和布尔值) ,完全没考虑null,只把它当作object的一种特殊值,为了兼容以前的代码, 后来就没法修改了。
​ 这并不是说null就属于对象, 本质上就是一个特殊值, 表示“没有”;
而在ES6草案时, 也曾将 null 的数据类型修改为了 null ,但是因为兼容性问题, 后来又改回了object;
​ null与undefined都可以表示“没有”, 含义非常相似;
相等运算符(==) 两者相等:

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

​ 但是, JavaScript的值分成原始类型和合成类型两大类, Brendan Eich(JS作者)觉得表示”无”的值最好不是对象;
​ 其次, JavaScript的最初版本没有包括错误处理机制, 发生数据类型不匹配时, 往往是自动转换类型或者默默地失败。
​ 作者觉得, 如果null自动转为0, 很不容易发现错误。
于是又设计了一个undefined;

​ 现代JavaScript的数据类型分为6种:

  1. 数值number,

  2. 字符串string,

  3. 布尔bull,

  4. 对象object,

  5. null,

  6. undefined

    null和undefined的区别


1.宽松比较时==,null和undefined相等,都表示’无’,’没有’ ==;

2.null出现的情况:

获取一个不存在的对象时

3.undefined出现的情况:

申明的变量没有赋值
函数的形参没有传值,
函数没有return返回值,
获取对象中不存在的属性

// 变量声明了, 但没有赋值
var i;
console.log(typeof(i)); // undefined
// 调用函数时, 应该提供的参数没有提供, 该参数等于undefined
function f(x) {
return x;
} v
ar f = f() // undefined
console.log(typeof(f));
// 对象没有赋值的属性
var o = new Object();
console.log(typeof(o.p)); // undefined
// 函数没有返回值时, 默认返回undefinedfunction ff() {}
var ff = ff(); // undefined
console.log(typeof(ff));

4.null的数据类型为object, undefined的数据类型为undefined

var d = document.getElementById('xx');
console.log(d); 

5.null 表示’无’的对象,转换为数值时为 0 ;

undefined 表示’无’的原始数据,转换为 NaN

var n = Number(null);
console.log(n); // 0
var f = Number(undefined);
console.log(f); // NaN

ps.一个变量为null ,表示这个变量指向的内存地址为空

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值