当前位置: 首页 > news >正文

null和undefined的区别有哪些?

null和undefined的区别有哪些?

  • 相同点
  • 不同点
    • undefined
    • null
  • 总结


相同点

1.null和undefined都是js的基本数据类型
2.undefined和null都是假值(falsy),都能作为条件进行判断,所以在绝大多数情况下两者在使用上没有区别

if(undefined){console.log('真的');
}else{console.log('假的');  //执行
}if(null){console.log('真的');
}else{console.log('假的');  //执行
}

当我们对两者进行比较的时候

//松散比较(loose equality)
console.log(null == undefined); //true//严格比较(strict equality)
console.log(null === undefined); //false

不同点

undefined

undefined代表的含义是未定义,一般声明了还没有定义的时候返回undefined, undefined 在 JavaScript
中不是一个保留字,这意味着可以使用 undefined 来作为一个变量名,但是这样的做法是非常危险的,它会影响对 undefined值的判断。我们可以通过一些方法获得安全的 undefined 值,比如说 void 0。

什么情况会出现undefined

//a并未定义过
console.log(typeof a);  //"undefined"
//注意,这里只能使用typeof,直接使用a会造成报错
console.log(a);  //Uncaught ReferenceError: a is not defined
//定义但未赋值
let a;
console.log(a);  //undefined
let a=undefined;
console.log(a); //undefined
//1-参数
function blueFn(a, b) {console.log(a, b);
}blueFn(12);  //12, undefined——因为b没有传值,所以是undefined
const blue={age: 18, gender: 'male'};console.log(blue.height); //undefined——因为就没有叫height的东西

简单来说大致有五种情况

1.真的是没定义(仅typeof可用)
2.定义了但没赋值
3.直接赋值或返回undefined
4.没有对函数的参数进行赋值
5.没有对应属性

null

null代表的是一个空对象,null主要用于赋值给一些可能会返回对象的变量,作为初始化。
什么情况会出现null

let name = null;
console.log(name);  //null
function fn1(a) {console.log(a);
}
fn1(null); //null
const person={name: 'blue', age: null};
console.log(person1.age); //null

总结

null是一个普通值,需要主动使用,只有主动使用时,null才会出现,没有声明null不会自己蹦出来
undefined是一个特殊值,是js中最后的备选方案,当我们向js要求一个“不存在的东西”时,会得到undefined(例如:没赋值的变量、没return的函数、没传的参数)

null本质上是个零,undefined本质上是个特殊对象,null可以和Number类型进行加减乘除,也可以进行比较

Number(null); //0
Number(undefined); //NaN12+null; //12
12+undefined; //NaN//跟数字比较会更加明显
-5<null; //true——null是0,-5<0-5<undefined;  //false
-5>undefined;  //false
-5==undefined; //false
//undefined就不是数字,跟数字没有可比性

解构赋值与undefined、null

const [a=1,b=2]=[undefined, null];//undefined就是没给——触发默认值
console.log(a);  //1//null是给了,但是空——不触发默认值
console.log(b);  //null

相关文章:

null和undefined的区别有哪些?

null和undefined的区别有哪些&#xff1f;相同点不同点undefinednull总结相同点 1.null和undefined都是js的基本数据类型 2.undefined和null都是假值&#xff08;falsy&#xff09;,都能作为条件进行判断&#xff0c;所以在绝大多数情况下两者在使用上没有区别 if(undefined)…...

【强烈建议收藏:计算机网络面试专题:HTTP协议、HTTP请求报文和响应报文、HTTP请求报文常用字段、HTTP请求方法、HTTP响应码】

一.知识回顾 之前我们一起学习了HTTP1.0、HTTP1.1、HTTP2.0协议之前的区别、以及URL地址栏中输入网址到页面展示的全过程&&DNS域名解析的过程、HTTP协议基本概念以及通信过程、HTTPS基本概念、SSL加密原理、通信过程、中间人攻击问题、HTTP协议和HTTPS协议区别。接下来…...

关于Java中的静态块讲解

文章目录类的加载特性与时机类加载的特性类加载的时机static的三个常用地方什么是静态块?特点写法静态块 static怎么用?类的加载特性与时机 在介绍static之前可以先看看类的相关 类加载的特性 在JVM的生命周期里&#xff0c;每个类只会被加载一次。 类加载的原则&#xf…...

ledcode【用队列实现栈】

目录 题目描述&#xff1a; 解析题目 代码解析 1.封装一个队列 1.2封装带两个队列的结构体 1.3封装指向队列的结构体 1.4入栈函数实现 1.5出栈函数实现 1.6取栈顶数据 1.7判空函数实现 题目描述&#xff1a; 解析题目 这个题我是用c语言写的&#xff0c;所以队列的pu…...

【基础算法】双指针----字符串删减

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…...

Billu靶场黑盒盲打——思路和详解

一、信息收集 1、探测内网主机IP可以使用各种扫描工具比如nmap&#xff0c;我这里用的是自己编写的。 nmap -n 192.168.12.0/24 #扫描IP&#xff0c;发现目标主机 2、先不着急&#xff0c;先收集一波它的端口&#xff08;无果&#xff09; nmap -n 192.168.12.136 -p 1-10000…...

【2363. 合并相似的物品】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你两个二维整数数组 items1 和 items2 &#xff0c;表示两个物品集合。每个数组 items 有以下特质&#xff1a; items[i] [valuei, weighti] 其中 valuei 表示第 i 件物品的 价值 &#xff0c;we…...

【C++提高编程】C++全栈体系(二十四)

C提高编程 第三章 STL - 常用容器 九、map/ multimap容器 1. map基本概念 简介&#xff1a; map中所有元素都是pairpair中第一个元素为key&#xff08;键值&#xff09;&#xff0c;起到索引作用&#xff0c;第二个元素为value&#xff08;实值&#xff09;所有元素都会根…...

c++11 标准模板(STL)(std::unordered_set)(十一)

定义于头文件 <unordered_set> template< class Key, class Hash std::hash<Key>, class KeyEqual std::equal_to<Key>, class Allocator std::allocator<Key> > class unordered_set;(1)(C11 起)namespace pmr { templ…...

AI/CV大厂笔试LeetCode高频考题之基础核心知识点

AI/CV互联网大厂笔试LeetCode高频考题之基础核心知识点算法复习1、二叉树的遍历2、回溯算法3、二分搜索4、滑动窗口算法题5、经典动态规划6、动态规划答疑篇6.1、总结一下如何找到动态规划的状态转移关系7、编辑距离8、戳气球问题9、最长公共子序列 Longest Common Subsequence…...

华为OD机试题,用 Java 解【静态扫描最优成本】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

常见无线技术方案介绍

无线技术 无线网络大体有两种&#xff1a;WAN&#xff08;广域网&#xff09;、PAN&#xff08;个人区域网&#xff09;。 对于LoRa&#xff0c;NB-IoT&#xff0c;2G / 3G / 4G等无线技术&#xff0c;通常传输距离超过1 km&#xff0c;因此它们主要用于广域网&#xff08;WA…...

收获满满的2022年

收到csdn官方的证书&#xff0c;感谢官方的认可&#xff01;...

react的生命周期

目录 一、初始化阶段 constructor() static getDerivedStateFromProps() componentWillMount() / UNSAFE_componentWillMount() render()&#xff1a; componentDidMount() 二、运行阶段 componentWillUpdate() / UNSAFE_componentWillUpdate() render() getSnapsh…...

scanpy 单细胞分析API接口使用案例

参考&#xff1a;https://zhuanlan.zhihu.com/p/537206999 https://scanpy.readthedocs.io/en/stable/api.html scanpy python包主要分四个模块&#xff1a; 1&#xff09;read 读写模块、 https://scanpy.readthedocs.io/en/stable/api.html#reading 2&#xff09;pp Prepr…...

【Vue3 第二十一章】Teleport组件传送

一、基本使用场景 有时我们可能会遇到这样的场景&#xff1a;一个组件模板的一部分在逻辑上从属于该组件&#xff0c;但从整个应用视图的角度来看&#xff0c;它在 DOM 中应该被渲染在整个 Vue 应用外部的其他地方。 这类场景最常见的例子就是全屏的模态框。理想情况下&#…...

在 Windows Subsystem for Linux (WSL2) 的 Ubuntu 系统上配置 Vulkan 开发环境

在 Windows Subsystem for Linux (WSL2) 的 Ubuntu 系统上配置 Vulkan 开发环境Vulkan Tutorial https://vulkan-tutorial.com/ Development environment - Linux https://vulkan-tutorial.com/Development_environment 1. Vulkan - Cross platform 3D Graphics https://www…...

放苹果HJ61

入门题目 把m个同样的苹果放在n个同样的盘子里&#xff0c;允许有的盘子空着不放&#xff0c;问共有多少种不同的分法&#xff1f;注意&#xff1a;如果有7个苹果和3个盘子&#xff0c;&#xff08;5&#xff0c;1&#xff0c;1&#xff09;和&#xff08;1&#xff0c;5&#…...

Windows下,OPC UA移植,open62541移植

OPC通信标准的核心是互通性 (Interoperability) 和标准化 (Standardization) 问题。传统的OPC技术在控制级别很好地解决了硬件设备间的互通性问题,在企业层面的通信标准化是同样需要的。OPC UA之前的访问规范都是基于微软的COM/DCOM技术, 这会给新增层面的通信带来不可根除的…...

【Tomcat与Servlet篇1】认识Tomcat与Maven

目录 一、什么是Tomcat 二、Tomcat的几个重要目录 conf文件​编辑 Server.xml logs文件 Webapps目录 三、如何使用Tomcat 但是&#xff0c;如果出现了点击之后进行闪退的情况&#xff0c;那又是怎么回事呢&#xff1f; 原因1&#xff1a;环境变量没有配置 原因2&#…...

DLP Pico技术与近眼显示系统设计解析

1. DLP Pico技术解析&#xff1a;微镜阵列如何重塑显示未来 在2014年&#xff0c;德州仪器(TI)推出了一项颠覆性的显示技术——基于DLP TRP架构的Pico芯片组。这项技术的核心是一块布满微小铝镜的芯片&#xff0c;每个微镜尺寸仅5.4微米&#xff0c;比人类头发直径的十分之一还…...

从网易招聘看技术人择校与城市选择:一线城市VS武汉,哪里机会更多?

技术人择校与城市选择指南&#xff1a;数据驱动的职业发展决策 站在高考志愿填报或考研择校的十字路口&#xff0c;每个怀揣技术梦想的年轻人都面临着一个关键抉择&#xff1a;是追逐一线城市的产业聚集效应&#xff0c;还是选择武汉这类高校密集但名企较少的城市&#xff1f;这…...

从零搭建ROS Gazebo仿真小车:集成摄像头与YOLO目标检测实现视觉感知

1. 环境准备与ROS安装 在开始构建仿真小车之前&#xff0c;我们需要先搭建好开发环境。ROS&#xff08;Robot Operating System&#xff09;是目前机器人开发最流行的框架之一&#xff0c;它提供了硬件抽象、设备驱动、库函数、可视化工具等丰富功能。我推荐使用Ubuntu 20.04 L…...

用STM32CubeMX和HAL库驱动MG90S舵机:从PWM原理到代码实现的保姆级教程

用STM32CubeMX和HAL库驱动MG90S舵机&#xff1a;从PWM原理到代码实现的保姆级教程 第一次接触舵机控制时&#xff0c;我被那个小小的MG90S迷住了——它居然能精确地转动到指定角度&#xff01;但当我真正开始用STM32控制它时&#xff0c;才发现PWM参数配置的坑比想象中多得多。…...

MCP协议与n8n集成:构建标准化AI自动化工作流

1. 项目概述&#xff1a;当MCP遇见n8n&#xff0c;一个自动化新范式的诞生最近在折腾自动化工作流&#xff0c;特别是想把不同AI模型的能力串联起来&#xff0c;发现了一个挺有意思的项目&#xff1a;brunopelatieri/mcp-n8n-bruia。这名字乍一看有点复杂&#xff0c;拆开来看&…...

疫情如何重塑GPU市场:从游戏硬件到数字基础设施的演变

1. 市场预期的“扭曲”&#xff1a;疫情如何重塑GPU行业逻辑如果你在2020年初问任何一位半导体行业的分析师&#xff0c;他们对当年第二季度GPU&#xff08;图形处理器&#xff09;市场的预测&#xff0c;大概率会得到一个基于历史季节性规律的保守或平稳的答案。然而&#xff…...

AI技能开发脚手架:从零构建大模型应用的标准化起点

1. 项目概述&#xff1a;一个为AI技能开发量身定制的脚手架如果你正在或打算开发一个基于大语言模型的AI技能&#xff08;Skill&#xff09;&#xff0c;无论是想集成到ChatGPT的GPTs里&#xff0c;还是想构建一个独立的AI Agent&#xff0c;那么你大概率会遇到一个共同的起点问…...

蓝桥杯EDA国赛备赛

一.电路设计部分&#xff08;1&#xff09;13届国赛要求&#xff1a;数码管驱动电路设计区域内&#xff0c;使用给定的元器件&#xff08;锁存器-U6、电容等&#xff09;和网络标识补充完成数码管驱动电路&#xff0c;实现单片机对数码管的显示控制。参考答案&#xff1a;1. 10…...

联邦学习与RAG融合:构建隐私保护的跨机构智能检索系统

1. 项目概述与核心价值最近在折腾一个跨机构文档智能检索的原型&#xff0c;核心需求是&#xff1a;在不共享原始数据的前提下&#xff0c;让多个参与方&#xff08;比如几家医院、几个研究实验室&#xff09;能够联合起来&#xff0c;构建一个强大的、统一的文档知识库&#x…...

在Linux Mint上搞定Synopsys VCS和Verdi 2018.06:一个学生党的完整踩坑与配置实录

在Linux Mint上搞定Synopsys VCS和Verdi 2018.06&#xff1a;一个学生党的完整踩坑与配置实录 作为一名微电子专业的学生&#xff0c;第一次接触Synopsys的VCS和Verdi工具时&#xff0c;我完全被它们的强大功能所震撼。然而&#xff0c;当我在自己的Linux Mint系统上尝试安装这…...