javascript中判断变量是否存在的正确方式

javascript中判断变量是否存在的正确方式

在Javascript中,我们通常判断一个变量是否存在(即不为null或者undefined),往往是这样判断的

if(tomy){
    console.log(obj.name);
}

这种写法在大部分情况下都没问题,但是在有的情况下就会很坑,比如:

空字符串

if(tomy.address){
    //tomy.address=''
    console.log(tomy.address);
}else{
    console.log("the obj tomy need address property");
}

我们的本意是判断tomy是否有address这个属性,结果是有address属性的,只是值为'’(啥都没有,空字符串),结果就被js引擎解析为布尔值false,和本意不符。

数字0

var config={};
if(minValue){
    //minValue=0;
    config.minValue=minValue;
}

我们的本意是判断是否传了minValue,如果有就赋值,结果是有传minValue属性的,只是值为0,结果就被js引擎解析为布尔值false,变成了没有传minValue这个属性。和本意不符。

布尔值

if(tomy.canWork){
    //tomy.canWork=false;
    //do work
}

我们的本意是判断tomy是否有canWork这个属性,结果是有canWork属性的,只是值为false,结果就会和本意不符。

结论

因此我们要判断一个变量是否存在,应该这样写才是比较好的,也方便后期维护。

//封装为一个方法
const isNullOrUndefined=obj=>obj===null || obj === undefined;

var config={};
if(!isNullOrUndefined(minValue)){
    config.minValue=minValue;
}


https://www.cnblogs.com/DHclly/p/9782328.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112629.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何去除IDEA中xml文件的屎黄色背景

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:翟凤玺 blog.csdn.net/u010318957/article/details/72459183 导…

    2021年6月25日
  • RS232电平转换电路_rs422转rs232

    RS232电平转换电路_rs422转rs232介绍:SP3232EEN是RS-232电平转换芯片,与之相近的芯片还有SP3222,其区别见下表: 芯片特性:1、3.0V-5.5V供电;2、120kbps传输率;3、15kv空气放电;4、8kv接触放电。 型号选择: 内部结构图: 典型应用电路:  原创性文章,转载请注明出处CSDN:http://blog.csdn…

    2022年8月10日
  • C语言实现PID算法:位置式PID和增量式PID[通俗易懂]

    原创者微信公众号PID算法可以说是在自动控制原理中比较经典的一套算法,在现实生活中应用的比较广泛。大学参加过电子竞赛的朋友都应该玩过电机(或者说循迹小车),我们要控制电机按照设定的速度运转,PID控制在其中起到了关键的作用。说来惭愧,大学这门课程学的不咋滴,老师讲的课基本没听进去过。直到后面接触竞赛,算是对PID有了很基础的一点点认识,直到现在工作实际应用的…

    2022年4月11日
  • ideaIU-2021.10.1 激活码【最新永久激活】

    (ideaIU-2021.10.1 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月27日
  • offsetWidth与offsetLeft

    offsetWidth与offsetLeft1、offsetWidth:为元素的width+元素的padding+边框的宽度如图:2、offsetLeft、offsetTop、offsetRight、offsetBottom以offsetLeft为例进行说明,在不同的浏览器中其值不同,且与父元素的position属性(relative,absolute,fixed)有关。现分以下几种情况说明:(测试所用的浏览…

    2022年10月21日
  • mac goland 2021.12激活码_在线激活

    (mac goland 2021.12激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html3YVYA7ZZGQ-eyJsaWN…

    2022年3月30日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号