前端学习<四>JavaScript基础——08-基本数据类型:Null 和 Undefined

很多其他的语言中,只有 null;但 JS 语言中,既有 null,又有 undefined。很多人会弄混,由此觉得 JS 语言很麻烦。其实不然,学习完这篇文章后,你会发现 null 和 undefined 的区别很容易理解。

Null:空对象

null 专门用来定义一个空对象。例如:let a = null,又例如 Object.create(null).

如果你想定义一个变量用来保存引用类型,但是还没想好放什么内容,这个时候,可以在初始化时将其设置为 null。你可以把 null 理解为:null 虽然是一个单独的数据类型,但null 相当于是一个 object,只不过地址为空(空指针)而已

比如:

 let myObj = null;
 cosole.log(typeof myObj); // 打印结果:object

补充:

  • Null 类型的值只有一个,就是 null。比如 let a = null

  • 从语义上讲,null表示一个空对象,所以使用 typeof 检查一个 null 值时,会返回 object。

undefined:未定义类型

case1:变量已声明,未赋值时

声明了一个变量,但没有赋值,此时它的值就是 undefined。举例:

 let name;
 console.log(name); // 打印结果:undefined
 console.log(typeof name); // 打印结果:undefined

补充:

  • Undefined 类型的值只有一个,就是 undefind。比如 let a = undefined

  • 使用 typeof 检查一个 undefined 值时,会返回 undefined。

case2:变量未声明(未定义)时

如果你从未声明一个变量,就去使用它,则会报错(这个大家都知道);此时,如果用 typeof 检查这个变量时,会返回 undefined。举例:

 console.log(typeof a); // undefined
 console.log(a); // 打印结果:Uncaught ReferenceError: a is not defined

case3:函数无返回值时

如果一个函数没有返回值,那么,这个函数的返回值就是 undefined。

或者,也可以这样理解:在定义一个函数时,如果末尾没有 return 语句,那么,其实就是 return undefined

举例:

 function foo() {}
 ​
 console.log(foo()); // 打印结果:undefined

case4:调用函数时,未传参

调用函数时,如果没有传参,那么,这个参数的值就是 undefined。

举例:

 function foo(name) {
     console.log(name);
 }
 ​
 foo(); // 调用函数时,未传参。执行函数后的打印结果:undefined

实际开发中,如果调用函数时没有传参,我们可以根据需要给形参设置一个默认值:

 function foo(name) {
     name = name || 'qianguyihao';
 }
 ​
 foo();

等学习了 ES6 之后,上方代码也可以这样写:

 function foo(name = 'qianguyihao') {}
 ​
 foo();

其他区别

undefined 实际上是由 null 衍生出来的,所以null == undefined的结果为 true。

但是 null === undefined 的结果是 false。它们虽然相似,但还是有区别的,其中一个区别是,和数字运算时:

  • 10 + null 结果为 10。

  • 10 + undefined 结果为 NaN。

规律总结:

  • 任何值和 null 运算,null 可看做 0 运算。

  • 任何数据类型和 undefined 运算都是 NaN。

赞赏作者

创作不易,你的赞赏和认可,是我更新的最大动力:

写在最后:希望大家可以点个关注点个赞,这对up真的很重要!谢谢!

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被瞧不起的神

谢谢啦,感谢支持|一起努力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值