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


相关推荐

  • php tp框架,TP框架

    php tp框架,TP框架tp thinkphp 框架 它也是一个轻量级的框架 它有中文社区 中文的帮助文档 它是国人开发的框架 Thinkphp 框架最初是由于企业级网站的开发和 web 网站的开发诞生的 最初诞生在 2006 年 它叫 fsc 2007 年正式更名为 thinkphp 它遵循了 apache2 0 协议 它支持了面向对象的开发 1 框架的概念 一堆代码的集合 里边有变量 函数 类 常量 里边也有许多设计模式 MVC AR 数据库

    2026年3月20日
    2
  • OSI模型参考

    OSI模型参考1 OSI 七层模型一 OSI 参考模型 nbsp nbsp nbsp nbsp nbsp nbsp 今天我们先学习一下以太网最基本也是重要的知识 OSI 参考模型 nbsp 1 OSI 的来源 nbsp nbsp nbsp nbsp nbsp nbsp OSI OpenSystemIn 即开放式系统互联 一般都叫 OSI 参考模型 是 ISO 国际标准化组织 组织在 1985 年研究的网络互连模型 nbsp nbsp nbsp nbsp nbsp nbsp ISO 为了更好的使网络应用更为普及 推出了 OSI

    2026年3月17日
    2
  • Ubuntu 9.10下 Eclipse 新建Java工程按扭无反应问题

    Ubuntu 9.10下 Eclipse 新建Java工程按扭无反应问题

    2021年8月4日
    64
  • 手把手教你接入支付宝支付

    手把手教你接入支付宝支付前一久做了支付宝支付,分享一下接入的详细步骤吧,移动端和服务端demo源码已上传至GitHub,要下载的移步至文章末尾。先给出支付宝官方文档:https://docs.open.alipay.com/204/105051/适用场景在App内集成支付宝支付。APP调用支付宝提供的SDK,SDK再调用支付宝APP内的支付模块。如果用户已安装支付宝APP,商家APP会跳转到支付宝中完成支付,支付完…

    2022年5月25日
    35
  • 腾讯混元发布并开源原生多模态生图模型“混元图像3.0

    腾讯混元发布并开源原生多模态生图模型“混元图像3.0

    2026年3月13日
    3
  • WinForm–CheckedListBox数据绑定

    WinForm–CheckedListBox数据绑定虽然点的时候没有提示 但是 CheckedListB 也是支持像 ComboBox 一样的数据绑定的 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp cblBtn DataSource dt nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp cblBtn DisplayMembe AAA nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp cblBtn ValueMember BBB 不过在取这些值的时候稍有不同 不能直接通过 Item

    2026年3月19日
    2

发表回复

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

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