• JS直接if参数的用法&JS中!和!!区别


       经常在JS中见一些代码直接if(参数),然后参数调用的时候是将元素自己传下去。例如下面代码:

        <body>
        <input type="text" name="" id="" value="111222" onclick="test1(this)" />
        <input type="text" name="" id="" value="111222" onclick="test1()" />
        </body>
        <script>
            function test1(obj){
                if(obj){
                    alert($(obj).val());
                }else{
                    alert("has not obj");
                }
            }
        </script>    

      我们分别点击上面的两个输入框显示如下:

    解释:实际上相当于java中的重载,如果传参数了就走if(obj),不传参数就走else。

      也就是如果参数不为空或者nul或者undefinedl或者“”空串则if(obj)成立。

    进一步的测试:

        <script>
            function test1(obj){
                if(obj){
                    alert("has obj");
                }else{
                    alert("has not obj");
                }
            }
            test1();//has not obj
            test1(null);//has not obj
            test1(undefined);//has not obj
            test1("");//has not obj
            test1(" ");//has obj
            test1("1");//has obj
        </script>    

      总结:不传参数,传的参数为null,传的参数为undefined,传的参数为""的时候if(obj)不成立,反之则成立。

    补充:直接if(param)可以用于判断参数,也相当于if(param != null),相反if(!param)就相当于if(param == null),例如:

        <script>
            function test(a, b) {
                if (!a || !b) {
                    alert("参数没传");
                } else {
                    alert("a与b不等于null")
                }
            }
            test();
            test("1", "2");
        </script>

     结果:

      

    补充:实际上是用!与上对象来求得一个布尔值,js中!和!!的区别及用法

    js中!的用法是比较灵活的,它除了做逻辑运算常常会用!做类型判断,可以用!与上对象来求得一个布尔值,
    1、!可将变量转换成boolean类型,null、undefined和空字符串、数字0 通过!转为boolean值0为true,其余为false。

    !null=true
    !undefined=true
    !''=true
    !100=false
    !'abc'=false
    !0=true

      特别注意0的情况。

    2、!!  常常用来做类型判断,在第一步!(变量)之后再做逻辑取反运算,在js中新手常常会写这样臃肿的代码:
    判断变量a为非空,未定义或者非空串才能执行方法体的内容

    var a;
    if(a!=null&&typeof(a)!=undefined&&a!=''){
        //a有内容才执行的代码  
    }

    实际上只需要一个表达式:

    if(!a){
        //a有内容才执行的代码...  
    }

    比如:如下一个验证值必填的函数,有值的话返回true,没值的话返回字符串消息"required." 

            function required(val) {
                return !!val || 'required.';
            }
    
            console.log(required());
            console.log(required(''));
            console.log(required(0));
            console.log(required("xxxxx"));

    结果:

    (1)required('')解释: !'' 返回的是true, 再进行一次!之后是false。 所以会返回后面的字符串。

    (2)required("xxxxx")解释: !"xxxxx" 返回的是false,再进行一次 ! 返回的是true。因此不与后面的字符串进行逻辑或运算,直接返回true。

  • 相关阅读:
    7.分类与预测
    6.图标绘制入门
    5.Python使用模块
    4.面向对象编程
    2.函数
    1,python基础入门
    (6)访问静态资源
    (5)操作数据库
    (2)快速创建springboot
    (1)IDEA 创建springboot
  • 原文地址:https://www.cnblogs.com/qlqwjy/p/9622228.html
Copyright © 2020-2023  润新知