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)
上一篇 2021年11月4日 上午9:00
下一篇 2021年11月4日 上午10:00


相关推荐

  • 龙虾创始人官宣!腾讯正式成为OpenClaw赞助商

    龙虾创始人官宣!腾讯正式成为OpenClaw赞助商

    2026年3月15日
    2
  • [生信]biomaRt 基因ID的转换

    [生信]biomaRt 基因ID的转换生信 基因 ID 的转换 Bioconductor 系列之 biomaRt 包的安装选择数据库三个主要函数 getBM getSequence getLDS 几个实用的例子一 对几个基因 symbol 注释它对应的 EnsembleID 和 ENTREZID 二 对刚才的那三个探针 ID 号进行多个内容注释 每个探针都对应着基因名已经染色体及起始终止坐标 三 对给定的基因 ID 号进行 GO 注释四 通过染色体及起始终止坐标来挑选基

    2026年3月18日
    2
  • taglib java,Taglib 原理和实现之什么是Taglib

    taglib java,Taglib 原理和实现之什么是TaglibTaglib 原理和实现之什么是 Taglib1 问题 Tag 究竟是什么 如何实现一个 Tag 一个 tag 就是一个普通的 java 类 它唯一特别之处是它必须继承 TagSupport 或者 BodyTagSuppo 类 这两个类提供了一些方法 负责 jsp 页面和你编写的类之间的交互 例如输入 输出 而这两个类是由 jsp 容器提供的 无须开发人员自己实现 换句话说 你只需把实现了业务逻辑的类继承 TagSupp

    2026年3月19日
    2
  • mysql profiling_MySQL profiling性能分析

    mysql profiling_MySQL profiling性能分析MySQL5 0 37 版本以上支持了 Profiling 官方手册 此工具可用来查询 SQL 会执行多少时间 Systemlock 和 Tablelock 花多少时间等等 对定位一条语句的 I O 消耗和 CPU 消耗非常重要 从启动 profile 之后的所有查询包括错误的语句都会记录 关闭会话或者 setprofiling 0 就关闭了 开启 profilingmys gt setprofil

    2026年3月17日
    2
  • pycharm激活码 2022.01.13_最新在线免费激活

    (pycharm激活码 2022.01.13)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    153

发表回复

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

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