javascritp中false、0、空字符串、null和undefined区别

移动支付APP(仿支付宝) Toast.makeText(PayActivity.this, "支付失败:" + payResponse.getMsg(), Toast.LENGTH_SHORT).show();Toast.makeText(PayActivity.this, "支付失败:" + t.getMessage(), Toast.LENGTH_SHORT).show();Toast.makeText(PayActivity.this, "支付失败", Toast.LENGTH_SHORT).show(); 阅读详情
相等运算符 (==、!=) 
如果两表达式的类型不同,则试图将它们转换为字符串、数字或 Boolean 量。 
NaN 与包括其本身在内的任何值都不相等。 
负零等于正零。 
null 与 null 和 undefined 相等。 
相同的字符串、数值上相等的数字、相同的对象、相同的 Boolean 值或者(当类型不同时)能被强制转化为上述情况之一,均被认为是相等的。 
其他比较均被认为是不相等的。 

恒等运算符 (===、!==) 
除了不进行类型转换,并且类型必须相同以外,这些运算符与相等运算符的作用是一样的。 

如把上面的第一个==改为===,则达到想要结果。



在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象——false、0、空字符串、null和undefined。这几个对象很容易用错,因此在使用时必须得小心。

类型检测

我们下来看看他们的类型分别是什么:

<script type="text/javascript">
    alert(typeof(false) === 'boolean');
    alert(typeof(0) === 'number');
    alert(typeof("") === 'string');
    alert(typeof(null) === 'object');
    alert(typeof undefined === 'undefined');    
</script>

运行上述代码,弹出的对话框应该显示的都是true。也就是说,false是布尔类型对象,0是数字类型对象,空字符串是字符串类型对象,null是object对象,undefined类型还是undefined。

互等性

当你用==操作符将false对象和其他对象进行比较的时候,你会发现,只有0和空字符串等于false;undefined和null对象并不等于false对象,而null和undefined是相等的

<script type="text/javascript">
    alert(false == undefined);
    alert(false == null);
    alert(false == 0);
    alert(false == "");
    alert(null == undefined);
</script>

我们可以把0、空字符串和false归为一类,称为“假值”;把null和undefined归为一类,称为“空值”。假值还算一个有效的对象,因此可以对其使用toString等类型相关的方法,而空值则不行。下面的代码将会抛出异常:

<script type="text/javascript">
    alert(false.toString());    // "false"
    alert("".charAt(0));        // ""
    alert((0).toExponential(10));  // 0.0000000e+0
    alert(undefined.toString());    // throw exception "undefined has no properties"
    alert(null.toString());             // "null has no properties"
</script>

字符串表示

虽然空值不能调用toString方法,但是却可以使用String构造函数进行构造。像decodeURI这样的函数,如果传入的是undefined或者null,返回的是“undefined”和“null”字符串。这点很容易用错。

<script type="text/javascript">
    alert(String(false));    // "false"
    alert(String(""));        // ""
    alert(String(0));  // 0.0000000e+0
    alert(String(undefined));    // "undefined"
    alert(String(null));             // "null"
    
    alert(decodeURI(undefined));// "undefined"
    alert(decodeURI(null));// "null"
</script>

假值和空值作为if条件分支

假值和空值有一个共性,那就是在作为if的条件分支时,均被视为false;应用“!”操作之后得到的均为true。如下示例代码:

<script type="text/javascript">
    var ar = [undefined,false,0,"",null];
    for(var i = 0,len = ar.length; i < len; i++){
        if(ar[i]){
            alert("你不应该看到此对话框!");
        }
    }
</script>

这是因为,这几个对象均被视为各自类型中的无效值或空值。因此if分支中这些对象均被视为false对待。

null和undefined的区别

这两个空值的区别也是容易混淆的。

undefined和null对象无非是两个特殊对象,undefined表示无效对象,null表示空对象。如果变量显式或者隐式(由Javascript引擎进行赋值)地被赋予了undefined,那么代表了此变量未被定义,如果被赋予null值,则代表此变量被初始化为空值。

在Javascript中,变量是通过var声明,=赋值符进行定义(初始化变量所指向的对象)。当然,如果声明一个全局变量(作为window属性)可以不使用var关键字。变量可以在声明的同时进行定义。

<script type="text/javascript">
    var undefinedVariable,nullVariable = null;
    alert(undefinedVariable); // "undefined"
    alert(window.undefinedVariable);        // "undefined"
    alert(window.abcd);        // "undefined"
    alert(nullVariable);          // "null"
    alert(abcd);                    // throw exception "abcd is not defined"
</script>

其实,变量如果声明了但是没有初始化,那么Javascript引擎会将此变量自动指向undefined对象。

这里需要注意,我们在上面引用window.abcd时,弹出的是undefined;而直接引用abcd变量时,却抛出了一个异常。这是由于Javascript引擎对于没有显式指定对象链的变量,会尝试从最近的作用域开始查找变量,查找失败,则退到父级作用链进行查找。如果均查找失败,则抛出“变量未定义”的异常。

这两个值在进行数字运算的时候也有不同。

<script type="text/javascript">
    alert(1+undefined);    // "NaN"
    alert(1+null);             // "1"
</script>

从null和undefined的意义上来说,这是很好理解的。



null表示"没有对象",即该处不应该有值。典型用法是:

(1) 作为函数的参数,表示该函数的参数不是对象。

(2) 作为对象原型链的终点。


Object.getPrototypeOf(Object.prototype)
// null

undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:

(1)变量被声明了,但没有赋值时,就等于undefined。

(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。

(3)对象没有赋值的属性,该属性的值为undefined。

(4)函数没有返回值时,默认返回undefined。


【SMPL简介】SMPL: A Skinned Multi-Person Linear Model【源码复现】 SMPL是一种3D人体建模方法.在数字人或者人物角色三维重建领域有着广泛应用支持人体的各种形状及动作可以简单理解为通过训练获取的人物模型SMPL 输入是:姿态shape vectorβ\betaβ+ 影响动作Pose的参数θ\thetaθ输出是: 各种变化后vertex顶点的数据作者:Loper, Matthew and Mahmood, Naureen and Romero, Javier and Pons-Moll, Gerard and Black, Michael J. 阅读详情

相关推荐

脑电分析:为什么大脑信号会“变同步”?——事件相关同步化与去同步化 (ERS/ERD) 全景解析

脑电分析中的事件相关同步化(ERS)和去同步化(ERD)是研究大脑动态节律的重要方法,反映特定任务下脑电频段能量的变化。ERD表示神经元活动分散(功率下降),提示脑区活跃处理信息;ERS则反映神经元同步(功率增强),常与静息状态相关。本文详解了ERS/ERD的生理机制、计算流程(包括基线校正和功率谱分析),并提供了Python实现示例,展示如何通过Welch法和STFT进行时频分析,生成ERD/ERS热力图。该技术广泛应用于运动想象脑机接口、癫痫检测等领域,为理解大脑功能状态提供了量化工具。

qq_32516809的博客 1395

树莓派物联网实战:远程控制机器人拳击地球仪项目全解析

物联网(IoT)技术通过将物理设备连接到互联网,实现了远程感知与控制,其核心在于嵌入式系统与网络通信的融合。其基本原理是通过微控制器或单板计算机(如树莓派)的GPIO接口驱动执行器,并结合网络服务将指令从云端传递至设备端。这项技术的价值在于打通了数字世界与物理世界的桥梁,广泛应用于智能家居、工业自动化和远程监控等场景。本文以“星球拳击机器人”这一具体项目为例,深入剖析了如何利用树莓派、继电器模块和摄像头,构建一个完整的远程交互系统。项目涉及硬件选型、电路设计、软件编程及系统集成,重点解决了GPIO控制、电源

weixin_30292745的博客 616

持续集成介绍及Jenkins自动化测试部署

学习持续集成及jenkins的自动化测试部署

ouihsiad的博客 4575

Javascript 中的false、0、null、undefined和空字符串对象

在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象——false、0、空字符串、null和undefined。这几个对象很容易用错,因此在使用时必须得小心。类型检测我们下来看看他们的类型分别是什么:script type="text/javascript"> alert(typeof(false) === boolean); alert(

liuwyong11的专栏 1193

手把手教你用gym训练宇树GO2机器人模型(附完整配置文件)

本文提供了一份详细的实战指南,教你如何使用Gym框架为宇树GO2四足机器人搭建强化学习训练环境。文章深入解析了环境配置、参数调试、奖励函数设置等关键步骤,并分享了避开常见陷阱的经验,旨在帮助开发者高效完成模型训练。

oo7890的博客 322

告别MATLAB!用Python的PYPOWER搞定电力系统潮流计算(附Case30完整代码)

本文介绍了如何从MATLAB迁移到Python,使用PYPOWER工具包进行电力系统潮流计算。通过详细的环境准备、数据接口兼容性实践、潮流计算实现及最优潮流计算进阶,帮助工程师和学生无缝过渡到Python生态。文章还展示了结果处理与可视化技巧,并附有Case30完整代码示例。

weixin_30411819的博客 298

undefined、null、空数组、空对象是true还是false

【代码】undefined、null、空数组、空对象是true还是false。

zzzz121380的博客 3537

Inception-Resnet-v1、Inception-Resnet-v2学习笔记(附Pytorch代码)_inception-resnet-v1 代码

Reduction-B模块:输入8*8*1792,输出8*8*1792.IR-B模块*10:输入17*17*896,输出17*17*896.IR-A模块*5:输入35*35*256,输出35*35*256.IR-A模块*5:输入35*35*384,输出35*35*256.IR-B模块*10:输入17*17*896,输出8*8*1792.IR-C模块*5:输入8*8*1792,输出8*8*1792.IR-C模块*5:输入8*8*1792,输出8*8*1792.

2401_89285791的博客 470

js中null与0的比较

简单来说就是: 要比较相等性之前,不能将null和undefined转换成其他任何值。就是undefined和null与其他数在进行相等判断时不进行类型转换。 null == undefined,这个是true。 另外: >=的结果可以根据 而==的结果与>=没有任何关系,即>=的结果不是>和==结果的累和; 如: null>0 //null转化为number,为0,所以0

luckydie的博客 1万+

大陆毫米波雷达ARS408-21xx实战:从零搭建ROS环境下的目标检测与可视化

本文详细介绍了大陆毫米波雷达ARS408-21xx在ROS环境下的实战部署全流程。从硬件连接、CAN总线配置,到ROS驱动节点开发、CAN报文解析,再到RViz三维可视化实现,提供了完整的代码示例与调试技巧,帮助开发者快速搭建毫米波雷达目标检测与可视化系统。

open4的博客 633

【实战】YOLOv5/v8模型→RK3588 NPU高效部署:模型转换/量化/精度调优完整指南​

摘要: 本教程详细介绍了YOLOv5模型在RK3588 NPU上的优化部署流程,重点解析了架构转换与量化技术。通过将检测头输出结构与decode操作分离,显著提升了模型在NPU上的兼容性和计算效率。LetterBox预处理方案有效保持图像宽高比,相比直接resize提升检测精度。INT8量化技术采用非对称量化策略,通过scale和zero_point参数实现浮点到整数的转换,在保证精度的同时大幅提升推理速度。实验表明,优化后的模型在RK3588上实现了高效的实时目标检测性能,为边缘AI部署提供了完整解决方案

LXY_LOVE36的博客 625

0 null undefined 空字符串的区别

许多朋友也许没有仔细研究它们之间的区别,或者并没有把这当一回事,但是在实际开发的途中,却会遇到各种各样的问题,今天我来给大家归纳一下它们之间的区别。

qq_60614034的博客 775

YOLO26改进策略【YOLO和Mamba】| 2024 VM-UNet,高效的特征提取模块VSS block 二次创新提高精度

VM-UNet模型设计的出发点是解决现有CNN-based和模型在医学图像分割中的局限性,利用(SSMs)的优势,提出一种更有效的医学图像分割模型。具体来说,CNN-based模型在捕捉长距离信息方面存在不足,而模型由于自注意力机制的二次复杂度导致计算负担较重。SSMs模型如Mamba不仅在建模长距离依赖方面表现出色,还具有线性计算复杂度,这为VM-UNet的设计提供了理论基础。

Limiiiing的博客 213

JS中undefined,null,"",0和false的区分 .

在JavaScript中也有很多种的”空值”和”假值”,那么它们都有什么共同点和不同点呢?      其实标题里面我已经列出了JavaScript中所有的”空值”和”假值”,除了boolean值本身就是true和false这两种情况外,其它数据类型的”空值”主要是undefined和defined这两大类。更多……这些空值的类型分别是: typeof(undefined) == 'undefi

lidiansheng的专栏 634

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JS中null,false,0,""和undefined

language ="javascript" type ="text/javascript" >         alert(typeof (false));//输出boolean         alert(typeof (0));//输出number         alert(typeof (""));//输出string         alert(typeof (null));//输出o

mengzhengjie的专栏 720

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

js中布尔值为false的六个形式和判断数据类型的方法

1.字符串为空 " "。2.数字为 0 。3.不是一个数字NaN。4.空对象null。5.未定义undefined。6.false 判断数据类型的方法

欢迎来到我的博客!在这里,我将分享我在前端开发方面的知识和经验。让我们一起探索前端开发的无限可能! 2689

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

null, undefined,““,0,false的关系

null本质上和0,"",false是一类东西,它们都表示一种数据类型的非值。正如0表示数字类型的非值,""表示字符类型的非值一样,null表示完全空的对象,即可以把它看成是对象类型的非值,没有任何属性的对象,({}不是完全空的对象,因为它继承了Object.prototype的属性,有一些自带方法。扩展一点,其实null就是Object.prototype的prototype....)因此typeof null返回object是完全合理的。 而undefined和它们都不同,它表示的就是未定义,还没有初

qq_33199019的博客 2104

JavaScript中0, "", null, false, undefined的区别

JavaScript中0, &quot;&quot;, null, false, undefined返回的Boolean类型均为false。然而它们所指的并不是同一个概念,需要加以区分。 首先先看一段代码: document.write(typeof(0)) //number document.write(typeof(&quot;&quot;)) //string document.write(typeo...

极客神殿 1292

java false 0_Java中false指的是1还是0

小编给大家分享一下Java中false指的是1还是0,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!false是0,false是一个布尔类型的值,布尔型变量的取值只有false和true,0为false,非0为true;布尔型变量可用于逻辑表达式,也就是“或”“与”“非”之类的逻辑运算和大于小于之类的关系运算。false是0。false是一个布尔类型的值,布尔型变量的取值只有fal...

weixin_39620099的博客 8744

Java 0和1代表的含义

在Java中: 1、整数型的0和1: 代表数字0和1 2、boolean类型的0和1: 0代表:false(也就是说整数型的0转为布尔类型时输出false) 1代表:true(整数1转换为布尔类型输出true) 3、在二进制最高位: 0代表:正数 1代表:负数 ...

单枪匹码 1万+

JavaScript 中 0 和 null 的判断

描述 假如后端接口返回数据type,type取值为0,1,2,3,4(都是数字类型)这四个值是有效值,当type取不到值的时候返回null。 现在,前端请求接口获取到数据后,拿到type,当type为null时,需要给一个默认值2,那么你会怎么赋值? // 接口返回的报文体假如是这样的 const res = { success: true, data: { type: null } } // 前端变量type const type = res.data.typ.

hongtoushan的博客 3887

区分JS中的undefined,null,““,0和false

在JavaScript中,我们经常会遇到undefined、null、""、0和false这几个值,这些值看起来很相似,但实际上它们之间有着很大的区别。综上所述,undefined、null、""、0和false之间的区别非常明显。undefined表示一个未定义的值,通常用于表示变量没有被赋值或者对象中没有该属性。需要注意的是,0不等于undefined、null和false。需要注意的是,false不等于undefined、null和0。false表示布尔值false,通常用于表示一个逻辑上的假值。

good7ob的博客 1329

JS - JS中数字0和空字符串,=== 和 == 用法和区别

以下是数字和字符串隐试转换规则:1、任何非零的数为true,0为false2、字符串来说任何非空字符串为 true,空字符串为false3、再用==比较时会把"" 先转成0 在比较。

MinggeQingchun的博客 1773

Javascript 中的false,零值,null,undefined和空字符串对象(|| 与 && 运算符详解)

Javascript 中的false,零值,null,undefined和空字符串对象(|| 与 && 运算符详解)

qq_43068818的博客 4734

区分js中的false,undefined,““,0和null

1.相同点:这五个值的共同点是,在if语句中做判断,都会执行false分支。当然从广义上来看,是说明这些数值都是其对应数据类型上的无效值或空值。还有这五个值作!运算,结果全为:true。 2.不同点:这几个值中也有不同,其中undefined和null比较特殊,虽然null的类型是object,但是null不具有任何对象的特性,就是说我们并不能执行null.toString()、null.constructor等对象实例的默认调用。所以从这个意义上来说,null和undefined有最大的相似性。看看nul

阿飞的博客 1100

详解js中判为空的情形(‘ ‘、“ “、0、NaN、false、null、undefined)

在前端的项目开发过程中,用 if 判断是否为空的情形经常使用,但为空的情形比较多样,不稍加注意容易判断错误而导致处理业务失败,本文将详细分析单个空格、多个空格、 '0'、0、NaN、false、null、undefined 等是否为空的情形。首先把结论写在下方:判为 false 的输入:' '(单引号)、" "(双引号)、false、null、0、NaN、undefined判为 true 的输入:' '(单引号内带空格)、" "(双引号内带空格)、'0'、'false'

蚂蚁搬砖我砌墙 3749
上一篇: clientHeight、scrollHeight、offsetHeight和scrollTop之间区别
下一篇: ES6,import时如何正确使用花括号'{ }'
function__
博客等级 码龄10年 99粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值