JS中undefined和null的区别

这篇具有很好参考价值的文章主要介绍了JS中undefined和null的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JavaScript 真是一个特殊的语言, 其他语言都只有一个表示 "无" 的值, 比如 Java 语言用的是 null, C 语言用的是 NULL, Python 语言用的是 None, Ruby 语言用的是 nil。只有 JS 里面表示 "空" 的有两个, 一个是 undefined, 一个是 null。

很多朋友在刚开始学习的时候, 都会有一个疑问, 就是 undefined 和 null 二者之间有什么区别呢 ? 我什么时候该用什么呢 ?接下来, 咱们就来好好聊一聊!

JS的基本数据类型

在 JS 内, 有几个基本数据类型

ES5

Number 数值

String 字符串

Boolean 布尔

Undefined 空

Null 空

ES6

Symbel 唯一值

undefined 和 null 其实就是 JS 中的基本数据类型, 空类型

从这个角度来看, 他们两个是一样的, 都表示 空 的意思,并且在进行数据类型比较的时候, 某些情况下也是一样的

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

两者的区别

两者的区别还是在于含义,之前我们说过, 所有的数据在计算机都是以二进制形式存储的,那么这两个数据也是会按照二进制形式存储的

undefined 因为表示的是 "没有", 所以没得转换, 啥也没有

null 因为表示的是 "空", 其实是有内容, 只不过有一个空内容, 存储的是 0000 0000 ...

那么反馈到我们的代码内,undefined 就是没有值, 或者说未被赋值

null 就是有值, 有一个空值, 一般会被当做这里有一个空对象, 也叫作空指针

举个例子 : 咱们以数字为例

JS中undefined和null的区别

这就是有一个具体的数字, 100 200 什么的

JS中undefined和null的区别

这就是 0, 用完了, 没有了

JS中undefined和null的区别

这就是 null, 有一个空架子, 其他的什么都没有

JS中undefined和null的区别

这就是 undefined, 连个架子都没有

根据上面的例子

undefined, 你什么都不需要做, 只要什么也不赋值就是 undefined

null, 需要你赋值, 直接赋值为一个 null, 也就是你要安装一个空架子

两者对比

1.数据类型不同, 但是值相同

两个数据分别属于 Undefined 类型和 Null 类型

但是表示的值都是空

所以在比较的时候, 我们要注意

console.log(undefined == null) // true, 不涉及数据类型比较
console.log(undefined === null) // false, 涉及数据类型比较
2.数据类型转换成为数值类型的时候结果不一样

null 表示空, 存储的时候也是一大堆 0, 所以转换为数值是 0

undefined 表示没有, 什么都没有内容转换为数值以后是 NaN

console.log(Number(null)) // 0
console.log(Number(undefined)) // NaN
3.使用场景不同

null

在我们需要一个空值或者置空变量的时候手动赋值,原型链的终点位置, 也就是 Object.prototype.proto 是 null

undefined

在变量声明未赋值的时候就是 undefined,函数只有形参没有实参的时候, 这个形参的值也是 undefined,如果一个函数没有设置返回值, 那么这个函数的返回值也是 undefined

总结

总之, 我们就记住一个原则,当你什么也没有做过的时候, 那么就是 undefined,只有你想白干活的时候, 那么你就手动给他写成 null 就好了文章来源地址https://www.toymoban.com/news/detail-444262.html

到了这里,关于JS中undefined和null的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【华为OD机考 统一考试机试C卷】特殊的加密算法(C++ Java JavaScript Python C语言)

    真题目录:华为OD机考机试 真题目录( D卷 +C卷 + B卷 + A卷) + 考点说明 在线OJ:点击立即刷题,模拟真实机考环境 华为OD面试真题精选:华为OD面试真题精选 有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。 规则如下: 明文为一段

    2024年04月16日
    浏览(45)
  • Bom 和 Dom 区别 ----- 真是DOM 和 虚拟Dom区别

    DOM和BOM的区别  我们都指代,javascript由三个部分组成: ECMAScript:描述了JS的语法和基本对象 BOM(浏览器对象):与浏览器交互的方法和对象 DOM(文档对象模型):处理网页内容的方法和接 ps:根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他浏览器风格迥异;

    2024年02月02日
    浏览(53)
  • 【Vue】Cannot set reactive property on undefined,null,or primitive value:undefined

    技术栈:vue + element 报错内容: Cannot set reactive property on undefined, null, or primitive value:undefined 如下图所示: 根据报错内容翻译一下,就是不能对 undefined,null 或者原始值为 undefined 的属性设置值。大白话就是不能对字段为 undefined,null 进行赋值,vue 是双向数据绑定。 总的来说,我

    2024年01月18日
    浏览(54)
  • 用js做一个简单的网页,用javascript做一个网页

    大家好,小编为大家解答用javascript写简单网页家乡的介绍代码的问题。很多人还不知道用javascript写简单网页小游戏,现在让我们一起来看看吧! 八、JavaScript基础 1.JavaScript JavaScript简称JS是用于制作网页的动态效果的,如:页面的弹出广告、浮动广告、下拉菜单、表单验证等

    2024年02月03日
    浏览(45)
  • 用javascript做一个计算器,用js做一个计算器代码

    大家好,给大家分享一下怎么用javascript做一个简单的计算器,很多人还不知道这一点。下面详细解释一下。现在让我们来看看! 页面布局设计(HTML+CSS)   由于在之前的博客中有对html和css进行详细的讲解,再次就不多叙述,直接上代码。因为js中用到了JQuery选择器所以在

    2024年02月04日
    浏览(69)
  • Node.js和浏览器在JavaScript运行环境方面存在一些区别和联系

    Node.js和浏览器在JavaScript运行环境方面确实存在一些区别和联系。 首先,让我们理解一下Node.js和浏览器的运行环境。Node.js是一个基于Chrome的V8引擎的服务器端JavaScript运行环境,允许开发者在服务器端运行JavaScript代码,并且提供了一系列的内置模块,如fs模块用于文件系统操

    2024年03月14日
    浏览(50)
  • 报错TypeError: Class extends value undefined is not a constructor or null

    在执行npm run build的时候遇到了错误:TypeError: Class extends value undefined is not a constructor or null;而执行npm run serve是可以正常执行的,报错如下: Building for production... ERROR  TypeError: Class extends value undefined is not a constructor or null TypeError: Class extends value undefined is not a constructor or null

    2024年02月16日
    浏览(44)
  • 【前端灵魂脚本语言JavaScript⑤】——JS中数组的使用

    🐚 作者: 阿伟 💂 个人主页: Flyme awei 🐋 希望大家多多支持😘一起进步呀! 💬 文章对你有帮助👉关注✨点赞👍收藏📂 第一种: var 数组名 = new Array(); 创建一个空数组 第二种: var arr2 = new Array(10); 创建一个定长为10的数组 第三种 var arr3 = new Array(a,b,c); 创建时直接指定元素值

    2023年04月08日
    浏览(65)
  • 【js&vue】联合gtp仿写一个简单的vue框架,以此深度学习JavaScript

    lifecycle.js 注解: this.$options.beforeMount.call(this);与 this.$options.beforeMount();有什么区别: call(this)  的作用是将当前对象( this )作为参数传递给  beforeMount  方法,使得在  beforeMount  方法内部可以通过  this  访问到当前对象的上下文 直接调用了  beforeMount  方法,没有指定上下

    2024年02月09日
    浏览(56)
  • 完成一个有趣的Web期末大作业(html、css、javascript、MySQL、Node.js)

    题目:学校老师的要求很开放,要自己做一个感兴趣的网页,要求使用基础的html、css和javascript,后端要使用数据库。 网上都是各种管理系统,看多了觉得没啥意思,要做一个自己感兴趣的网站。近几年沉迷犬夜叉这部动漫,就花了两天的时间创建了一个犬夜叉的网站,对于

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包