我的JavaScript学习之路三:JavaScript数据类型之Null、Undefined 类型

一、Undefined 类型

Undefined 类型只有一个值,就是特殊值 undefined。当使用 var 或 let 声明了变量但没有初始化时,就相当于给变量赋予了 undefined 值

var message;   //变量声明但未初始化
console.log(message);  //undefined

一般来说,永远不用显式地给某个变量设置 undefined 值。字面值 undefined主要用于比较。
而且undefined在 ECMA-262 第 3 版之前是不存在的。增加这个特殊值的目的就是为了正式明确空对象指针(null)和未初始化变量的区别。

Undefined 类型用法

  • 变量被声明了,但没有赋值时,就等于undefined。
var name;   //变量声明了,但是没有赋值,会返回undefined
console.log(name);  //undefined
console.log( name == undefined); //true;
  • 调用函数时,应该提供的参数没有提供,该参数等于undefined。
function test(a,b) {
     console.log(a);   //1
     console.log(b);   //undefined   因为变量b没有传参,所以为undefined
}
test(1);  
//1
//undefined        
  • 访问对象没有赋值的属性,该属性的值为undefined。
let obj = {
    name : 'tom',
    age : 18
}
obj.name   //'tom'
obj.age    //18
obj.sex    //undefined
  • 函数没有返回值时,默认返回undefined
var x = f();
console.log(x);  //undefined

二、Null类型

Null 类型同样只有一个值,即特殊值 null。逻辑上讲,null 值表示一个空对象指针,这也是给typeof 传一个 null 会返回"object"的原因

Null 类型用法

  • 初始化一个空对象,或者回收一个对象
var obj = null;  
  • 检查空对象是否赋值一个对象
   if(obj != null){}  //  证明obj是一个对象
  • 表示原型链的终点
Object.prototype.__proto__  === null;  //true
  • 当函数的返回期望值是对象时, 用作返回值传出
  function getPerson() {
    if(condition){
       return new Person("tom");
    }else{
        return null;
    }
  }

三、Undefined 类型与Null类型区别

1.两者相似性

在JavaScript语言中undefined和null都表示"无"的值

值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的,通过下列代码可以验证这一结论:

undefined == null; //true

2.两者不同性

  • null是一个表示"无"的对象,转为数值时为0

    null表示的是一个“空对象指针”,JS中栈内存中保存的是基本类型值和引用类型值得引用地址,其中引用类型得引用地址就像我们生活中得家门钥匙,栈内存就像我们的裤兜,从裤兜中取了钥匙就可以进入房间。null就像是在裤子兜里放了一把打不开任何门的钥匙

  • undefined是一个表示"无"的原始值,转为数值时为NaN

    undefined表示一个变量声明了,但没有初始化,在栈内存中申请了一块空间,但是里面什么值都没放,JS就默认给放一个undefined。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值