zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    事务的特性(ACID)
    网络代理
    防止SpringMVC拦截器拦截js等静态资源文件
    Tomcat配置虚拟目录
    SpringMVC总结(SSM)
    Spring声明式事务总结
    Linux中MySQL忽略表中字段大小写
    MySQL之sql文件的导入导出
    MyBatis总结
    Linux网络
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15453679.html
Copyright © 2011-2022 走看看