0

0

JavaScript中表示空的undefined与null的区别及用法

黄舟

黄舟

发布时间:2017-02-28 14:50:15

|

2195人浏览过

|

来源于php中文网

原创

我刚开始学习JavaScript的时候 

就感觉undefined挺新鲜
因为其他语言没有
而且不仅有undefined,居然还有一个表示空的null
相信很多同学都说不出来undefined与null有什么区别
今天我就总结一下javascript中表示空的undefined与null的区别

相似

undefined和null都是JavaScript中的基本类型
并且它们的类型值各只有一个,就是undefined和null,与它们的类型同名
正常来说,这两个值看起来还真没什么区别

var foo = undefined;
var foo = null;

而且标准还有这样的规定

console.log(null == undefined) // true

(但是null !== undefined

转化为布尔值都是false

立即学习Java免费学习笔记(深入)”;

if(!undefined){
    console.log(1);//1}if(!null){
    console.log(1);//1}

区别

但其实,有区别
先来看看这几行代码

console.log(undefined in window);// trueconsole.log(null in window);// false

这是其中不同的一点
null是JavaScript的关键字
而undefined是window上的一个特殊的的属性(和NaN、Infinity一样)
虽然ES5undefined变为只读属性,但是仍然有不合理的地方,比如说这样

function fn(){
    var undefined = 1;// 注意:前方高能
    console.log(undefined);// 1}
fn();

看吧,因为undefined不是关键字,所以我们可以在局部变量中声明undefined(简直无语)
即便你是严格模式

function fn(){    "use strict";    var undefined = 1;
    console.log(undefined);// 1}
fn();

我们可千万不要写这么令人发指的代码

在进行数学运算时也存在差别

console.log(undefined + 1); //NaNconsole.log(null + 1); //1

undefined进行任何运算会转换为NaN
而null转换为0

历史

JavaScript有两种表示空的值是有道理的
js之父Brendan Eich最开始设计得时候像Java一样,只有null
但是他考虑到js有基本值和引用值两种
用一个对象来表示空怪怪的typeof null === 'object',而且null转化为数字0导致很多bug不好找
于是他又设计了undefined

用法

按照js之父的设计
undefined表示缺少值
null表示为空对象
但是现在我们并不是这样使用的

可以这样来理解
undefined表示变量没有初始化,没有值
null表示变量初始化了,值为“空值”

undefined是js用的,而null是给我们用的
这句话不知道大家能不能理解
比如在这些情况

  • var a; 声明变量,引擎会在预编译给它赋上默认值undefined

  • function a(){} 声明函数,没有返回值默认返回undefined

  • var obj = {};obj.a; 访问不存在的对象属性,默认值undefined

    时代购物
    时代购物

    具有分类浏览商品或使用搜索工具查找商品,可按价格、商品分类、关键字搜索商品,可打印订单的详细信息以及电子邮件通知,保存购物车,查看购物车,清空购物车,查看已经提交的订单,会员注册、享受会员价格,会员登录,市场价,会员价和VIP会员价的比较,为朋友订购商品(送礼物的好办法哦), 完整的客户服务中心,新品上架展示区,推荐商品展示区,特价商品展示区,销售排行展示区,关注排行展示区阅读、发表商品评论信息并

    下载
  • var a = function(a){};a(); 没有指定实参,默认参数值undefined

  • ……

这都是系统给我们默认的undefined,也就是js使用的
而我们要用的是null
比如说

  • var obj = Object.create(null); 创建空对象

  • demo.onclick = null; 解除绑定事件

  • ……

只要我们想要使用空,就用null肯定没错,某些情况还可以方便浏览器的垃圾回收

总结

最后给大家总结一下

  • undefined是window上的特殊属性,是标识符,可以赋值;null是特殊关键字,不是标识符,不能赋值

  • undefined == null –> true | undefined === null –> false

  • undefined转化为number为NaN,null转化为number为0

  • undefined与null转换为boolean都是false

  • undefined表示没有值,null表示空值

  • 我们应该使用null表示空而不要使用undefined

  • 永远不要重定义undefined

 以上就是JavaScript中表示空的undefined与null的区别及用法的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
PHP WebSocket 实时通信开发
PHP WebSocket 实时通信开发

本专题系统讲解 PHP 在实时通信与长连接场景中的应用实践,涵盖 WebSocket 协议原理、服务端连接管理、消息推送机制、心跳检测、断线重连以及与前端的实时交互实现。通过聊天系统、实时通知等案例,帮助开发者掌握 使用 PHP 构建实时通信与推送服务的完整开发流程,适用于即时消息与高互动性应用场景。

11

2026.01.19

微信聊天记录删除恢复导出教程汇总
微信聊天记录删除恢复导出教程汇总

本专题整合了微信聊天记录相关教程大全,阅读专题下面的文章了解更多详细内容。

79

2026.01.18

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

109

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

153

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

79

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

44

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

20

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

133

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

45

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

相关下载

更多

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 3.8万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.3万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号