JS 应用篇(一):Underfined与Null的区别

从波形图到参数调优:一次无感BLDC电机启动失败的深度解析 本文深入解析无感BLDC电机启动失败案例,通过波形分析揭示参数不匹配和IPM保护机制触发等关键问题。详细探讨了过零点检测、PWM周期设置及强拖参数调优的底层逻辑,并分享IPM模块保护机制与实战调优技巧,最终实现99.98%的启动成功率。 阅读详情

目录:

一、基本数据类型

在介绍undefined与null之前,我们先来了解一下ECMAScript中的数据类型。在ECMAScript中有五种简单数据类型(也称为基本数据类型): Undefined、Null、Boolean、Number 和 String 。还有一种复杂数据类型——Object。

Underfined和Null都只有一个值,分别对应着underfined和null。这两种不同类型的值,既有着不同的语义和场景,又表现出较为相似的行为。

二、underfined

undefined 的字面意思就是:未定义的值 。这个值的语义是,希望表示一个变量最原始的状态,而非人为操作的结果 。 这种原始状态会在以下 4 种场景中出现:

1、声明一个变量,但是没有赋值

var foo;
console.log(foo); // undefined

访问 foo,返回了 undefined,表示这个变量自从声明了以后,就从来没有使用过,也没有定义过任何有效的值。

2、访问对象上不存在的属性或者未定义的变量

console.log(Object.foo); // undefined
console.log(typeof demo); // undefined

访问 Object 对象上的 foo 属性,返回 undefined , 表示Object 上不存在或者没有定义名为 foo 的属性;对未声明的变量执行typeof操作符返回了undefined值。

3、函数定义了形参,但没有传递实参

//函数定义了形参 a
function fn(a) {
    console.log(a); // undefined
}
fn(); //未传递实参

函数 fn 定义了形参 a, 但 fn 被调用时没有传递参数,因此,fn 运行时的参数 a 就是一个原始的、未被赋值的变量。

4、使用void对表达式求值

void 0 ; // undefined
void false; // undefined
void []; // undefined
void null; // undefined
void function fn(){} ; // undefined

ECMAScript 明确规定 void 操作符 对任何表达式求值都返回 undefined ,这和函数执行操作后没有返回值的作用是一样的,JavaScript 中的函数都有返回值,当没有 return 操作时,就默认返回一个原始的状态值,这个值就是 undefined,表明函数的返回值未被定义。

因此,undefined 一般都来自于某个表达式最原始的状态值,不是人为操作的结果。当然,你也可以手动给一个变量赋值 undefined,但这样做没有意义,因为一个变量不赋值就是 undefined 。

三、null

null 的字面意思是:空值 。这个值的语义是,希望表示一个对象被人为的重置为空对象,而非一个变量最原始的状态 。 在内存里的表示就是,栈中的变量没有指向堆中的内存对象。

1、一般在以下两种情况下我们会将变量赋值为null

  • 如果定义的变量在将来用于保存对象,那么最好将该变量初始化为null,而不是其他值。换句话说,只要意在保存对象的变量还没有真正保存对象,就应该明确地让该变量保存null值,这样有助于进一步区分null和undefined。

  • 当一个数据不再需要使用时,我们最好通过将其值设置为null来释放其引用,这个做法叫做解除引用。不过解除一个值的引用并不意味着自动回收改值所占用的内存。解除引用的真正作用是让值脱离执行环境,以便垃圾收集器在下次运行时将其回收。解除引用还有助于消除有可能出现的循环引用的情况。这一做法适用于大多数全局变量和全局对象的属性,局部变量会在它们离开执行环境时(函数执行完时)自动被解除引用。

2、特殊的typeof null

当我们使用typeof操作符检测null值,我们理所应当地认为应该返"Null"类型呀,但是事实返回的类型却是"object"。

var data = null;
console.log(typeof data); // "object"

是不是很奇怪?其实我们可以从两方面来理解这个结果:

  • 一方面从逻辑角度来看,null值表示一个空对象指针,它代表的其实就是一个空对象,所以使用typeof操作符检测时返回"object"也是可以理解的。

  • 另一方面,其实在JavaScript 最初的实现中,JavaScript 中的值是由一个表示类型的标签和实际数据值表示的(对象的类型标签是 0)。由于 null 代表的是空指针(大多数平台下值为 0x00),因此,null的类型标签也成为了 0,typeof null就错误的返回了"object"。在ES6中,当时曾经有提案为历史平凡, 将type null的值纠正为null, 但最后提案被拒了,所以还是保持"object"类型。

四、总结

用一句话总结两者的区别就是:undefined 表示一个变量自然的、最原始的状态值,而 null 则表示一个变量被人为的设置为空对象,而不是原始状态。所以,在实际使用过程中,为了保证变量所代表的语义,不要对一个变量显式的赋值 undefined,当需要释放一个对象时,直接赋值为 null 即可。

抖音短视频数据抓取实战系列(一)——模拟器性能对比与优化配置 本文是抖音短视频数据抓取实战系列的开篇,重点探讨了模拟器选型与优化配置。通过对比雷电、夜神、逍遥三大主流模拟器在性能、抖音兼容性及抓包友好度上的表现,文章指出雷电模拟器因其稳定的桥接网络模式和良好的兼容性,是数据抓取的优选。并提供了雷电模拟器从安装、网络桥接到系统优化的详细配置指南,旨在帮助读者构建稳定高效的抓取环境。 阅读详情

相关推荐

别再只调PID了!手把手教你从LC谐振到检波,搞定STM32智能车电磁循迹硬件电路

本文深入解析STM32智能车电磁循迹硬件电路设计,从LC谐振选频到数字信号处理,提供完整的信号链路设计要点与实战技巧。通过优化电磁杆布局和信号放大电路,显著提升赛道位置检测精度,误差可控制在±0.5cm以内,为智能车竞赛提供可靠硬件支持。

weixin_29220405的博客 263

详解 undefined 与 null 的区别

Undefined 和 Null 是 Javascript 中两种特殊的原始数据类型(Primary Type),它们都只有一个值,分别对应 undefined 和 null ,这两种不同类型的值,既有着不同的语义和场景,又表现出较为相似的行为: undefined undefined 的字面意思就是:未定义的值 。这个值的语义是,希望表示一个变量最原始的状态,而非人为操作的结果 ...

dkjtyhj3671的博客 4191

ANSYS Fluent中的声学模型:实用指南

文章摘要 本文介绍了ANSYS Fluent中三种气动声学模拟方法:Ffowcs-Williams & Hawkings(FWH)模型、宽带噪声源模型和波动方程模型。FWH模型适用于外部气动声学问题,需要瞬态流场数据来预测远场噪声;宽带模型基于稳态RANS模拟,可快速识别噪声源位置,适合早期设计阶段;波动方程模型直接求解声波方程,提供全域声压分布,但仅适用于低马赫数流动。文章详细说明了各模型的使用场景、设置步骤和关键参数配置,为工程应用提供了实用指南。

weixin_45793544的博客 1321

undefined和null的区别

目录 1、undefined不是关键字,而null是关键字; 2、undefined和null被转换为布尔值的时候,两者都为false; 3、undefined在和null进行==比较时两者相等,全等于比较时两者不等 4、使用Number()对undefined和null进行类型转换 5、undefined本质上是window的一个属性,而null是一个对象; 6、undefin...

大香蕉的博客 1万+

[Linux项目实践] LCD Panel的硬件分析及调试

LCD硬件分析 项目使用3.5” TFT-LCD并且支持触摸控制。LCD的硬件可从几个方面学习:1)查看LCD的硬件连线。2)查看数据手册了解寄存器的控制。3)查看LCD DATASHEET了解硬件操作 1)LCD硬件连线 在图中有33个引脚,22根数据引脚和9根控制引脚。 LCD的工作原理:像素点是从左至右,从上至下逐个显示,LCD控制寄存器会从从内存中的framebuffer通

Terry_Yuan的技术专栏 3023

使用 Ansys Q3D 进行电容提取

精确的电容提取在高速和 RF 设计中至关重要。在本博客中,我们演示了如何使用Ansys Q3D Extractor来计算电容值,从基本的平行板电容器开始,然后转到MEMS芯片的切口,以检查焊盘和RF线对整体电容的影响。在下面的比较中,我们使用 Q3D 从 MEMS 芯片切口中提取两种配置的电容矩阵:一种仅带有焊盘,另一种带有连接到 RF 线路的焊盘。这种比较表明,焊盘是总电容的主要贡献者,而 RF 线路则略有增加。按照上述工作流程,提取焊盘的电容,得到的电容矩阵如下所示。,选择一个已识别的网络,然后单击。

jkh920184196的博客 1813

null 和 undefined 的区别

null 和 undefined 的区别

weixin_62800373的博客 1万+

Cadence Sigrity PowerSI实战:从.brd到S参数提取的完整避坑指南

本文详细介绍了使用Cadence Sigrity PowerSI进行信号完整性分析的完整流程,从.brd文件预处理到S参数提取的关键技巧。通过实战案例和避坑指南,帮助工程师高效解决高速PCB设计中的信号质量问题,提升仿真精度和设计效率。

carrot的博客 694

null 和undefined的区别

文章目录1、 定义2、null和undefined的区别1.首先是数据类型不一样2.null和undefined 两者相等,但是当两者做全等比较时,两者又不等。(因为它们的数据类型不一样)3.转化成数字的值不同4.null代表"空",代表空指针;undefined是定义了没有赋值3、null和undefined的运用场景undefined1、变量被声明时,但没有复制时,就等于undefined2、调用函数时,应该提供的参数没有提供,该参数等于undefined3、对象没有赋值的属性,该属性的值为undefi

m0_45272038的博客 9174

MRI多序列,多中心数据集预处理--使用FSL-Flirt 配准数据

FLIRT(FMRIB 的线性图像配准工具)是用于线性(仿射)模态内和模态间脑图像配准的全自动稳健且准确的工具。 什么是配准 在这两张图片上,很容易看出它们没有对齐,左边相对右边倾斜,虽然我们人类视觉系统还是能把对应的解剖关系连系在一起,但是我们使用计算机分析时确不能够 因此,我们希望相同的解剖结构对齐,用坐标表示的话,希望他们在相同的坐标上。如下图 对齐这些解剖结构的过程就叫做配准(register) 因此,配准的目的也是使相同的解剖结构在同一个位置,便于分析。可以将CT和MRI配准,看同一结构在两个

Tina姐的博客 1万+

Plant Simulation新手入门:5步搞定生产线物流仿真(附模型库使用技巧)

本文为Plant Simulation新手提供了从零开始构建生产线物流仿真的五步入门指南。通过理念重塑、流程规划、对象连接、参数设置到数据分析的完整流程,帮助用户快速掌握这一强大仿真工具的核心逻辑。文章特别强调了模型库的高效使用技巧,助力工程师在虚拟环境中精准模拟和优化生产系统,提升规划效率。

efc123456的博客 333

Js 中null 和underfined的区别

null表示"没有对象",即该处不应该有值。 undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。

rush_peng的博客 402

【RT-DETR涨点改进】全网独家首发、特征融合改进篇 | AAAI 2026 | 引入CDEM交叉动态增强模块,双向引导和融合,在低光图像增强中有效提升了图像的亮度,提升小目标和暗目标的检测准确率

本文提出了一种基于CDEM(交叉动态增强模块)改进的rtdetr网络模型,有效提升了在低光和复杂环境下的目标检测性能。CDEM模块通过动态增强亮度与色彩特征,改善图像输入质量,增强细节和对比度。该模块具有轻量级结构,易于集成到现有模型中,能够显著提升小目标和暗目标的检测准确率与鲁棒性。文章详细介绍了CDEM模块的结构原理、实现方法,并提供了完整的代码实现和配置指南,包括三种改进版本的YAML配置文件。实验结果表明,该方法在图像增强和目标检测任务中均取得了优异性能。

Ai缝合怪、助力小伙伴高效发论文 143

JavaScript中null、underfined、NaN的辨别以及数据类型的检测

1.辨别 null表示一个“空”的值,它和0以及空字符串’‘不同,0是一个数值,’'表示长度为0的字符串,而null表示“空”。 undefined表示值未定义。 NaN表示非数值。 好的,不多说。直接上代码解释比较好理解。 var a1; var a2 = true; var a3 = 1; var a4 = "Hello"; var a5 = new Object(); var a6 = null; var a7 = NaN; var a8 = undefined; alert(type

qq_43239667的博客 513

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

nan null underfined的区别

null对应类型object,布尔值false,数字0,字符串“null”undefined对应类型undefined,布尔型false,字符串undefined,数字计算结果一定是NaNNaN不是一个数字(1)undefined与null是相等;(2)NaN与任何值都不相等,与自己也不相等。...

qq_20834787的博客 823

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

js中三大特殊数据underfined,null,NaN

NaN:非法运算得到的结果 特殊之处: 是一个数值型的数据,但是不是一个数字; NaN不等于任何值,和任何数据都不想等,NaN不等于NaN 检测方法: true:检测结果为NaN 或能转成NaN; false:检测结果不是NaN或不能转成NaN undefined:未赋值,类型是object 特殊之处: undefined和null在关系运算符两边隐式转换后,得到了一致的数据; undefined被Number转成NaN,null被Number转成0 如何判断三大特殊的值? NaN可以使用isNaN

qq_39115357的博客 392

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

js undefined和null区别

js中 underfined和null我们平时开发中都很常见,但是它们什么区别?下面我们详细讲解下他们! 1.undefined 1.undefined是个基本类型,顾名思义,未定义,没有定义这个值,所以给个undefined! var a ; console.log(a);//undefined 2.即便没声明变量,也可以用typeof来判断,其他地方用到这个未声明的变量会报错! console.log(typeof b);//undefined console.log(b)//Uncaught Ref

916

null和underfined

null和underfined null:空,没有 undefined:未定义,没有 “”:空字符串,没有 0:也可以理解为没有 空字符串和null的区别 都是去种树 空字符串属于挖了个坑,但是没有任何东西 null是连坑都没挖 空字符串相对于null来说开辟了内存,消耗了那么一丢丢的性能 null和undefined的区别 null一般都是暂时没有,预期中以后会有的(可能以后也没有达到预期...

weixin_44462907的博客 1691

JavaScript中null、undefined、NaN、false等的区别

JavaScript中null、undefined、NaN、false等的区别一、typeof 操作符二、object二、number三、string四、undefined五、== 和 ===的区别 一、typeof 操作符 使用typeof可以检测给定变量的数据类型: “undefined” :如果这个值未定义 “boolean” : 如果这个值是布尔值 “string” ...

junxuezheng的博客 503

null和underfined的区别:

null和underfined的区别: null的值为0,underfined为NaN Number(null) // 0 Nunmber(undefined) // NaN

做一个有趣的妞儿 74

JavaScript中null和undefined的区别

JavaScript中存在这样两种原始类型:Null与Undefined。这两种类型常常会使JavaScript的开发人员产生疑惑,在什么时候是Null,什么时候又是Undefined? Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。 Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回...

LikeP的博客 225

JS中Null与Undefined的区别

Undefined:当声明的变量还未被初始化时,变量的默认值为undefined。 null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。 var re; typeof(re) ; //返回 结果为undefined typeof(null); //返回结果为object null的数据类型是Object对象,...

diexuane6301的博客 125

js中null,underfined.object几个类型

js中null,underfined,object,null几个类型 要区分一下null,undefined和object这几个类型。null表示无值,默认的空值是null;使用typeof运算符判断数据类型时不会返回null这个类型。例如,声明一个变量fruit后,未赋值,它默认是一个null值,但没有定义类型,这时fruit就是一个undefined,如果这个fruit是为了保存对象,则修改其初始化的值为null,那么使用typeof运算符检测其类型时会显示为object类型。 ...

weixin_45667658的博客 945

JavaScript中null与undefined的区别,及简单的计算器功能

null null表示"没有对象", null类型只有一个值,是null,表示不存在的对象,也可用于声明一个空的对象,null是javascript的关键字,一个空对象指针,代表空值。 undefined undefined是一个预定义的全局变量,表示某一变量声明未进行初始化。表示"缺少值",就是此处应该有一个值,但是还没有定义。变量被声明了,但没有赋值时,就等于undefined。调用函数时,应该提供的参数没有提供,该参数等于undefined。对象没有赋值的属性,该属性的值为undefined。函数没有

m0_50671299的博客 186

JavaScript中undefined和null的区别

undefined:表示没有数值,在使用var 声明变量但未对其加以初始化时,这个变量的值就是undefined null:表示有数值,但是数值为“空”. 1.两者的声明 声明但未定义:undefined var a; console.log(a); 声明且定义为null; var b = null; console.log(b); 2.typeof类型不同 undefined的类型是un...

qq_41430573的博客 245

null underfined NaN 判断

开始正剧之前,复习一下js的关键字(吐一口血....) ECMAScript的关键字根据规定不能用作变量名或者函数名,ECMA-262所涉及到关键字有如下: break case catch continue default delete do else finally for function if in instanceof new return switch this throw tr...

素钗一生推 453
上一篇: CSS 技巧篇(七):设置元素居中
下一篇: JS 应用篇(二):== 与 === 的区别
madman0621
博客等级 码龄11年 36粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值