• javascript中的2个感叹号的用法


    !!是逻辑"非非",即是在逻辑“非”的基础上再"非"一次。通过!或!!可以将很多类型转换成bool类型,再做其它判断。

     

      应用场景:判断一个对象是否存在

    假设有这样一个json对象:{ color: "#E3E3E3", "font-weight": "bold" },需要判断是否存在,用!!再好不过。

     

    如果仅仅打印对象,无法判断是否存在:

    var temp = { color: "#A60000", "font-weight": "bold" };
    alert(temp);
    结果:[object: Object]

     

    如果对json对象实施!或!!,就可以判断该json对象是否存在:

    var temp = { color: "#A60000", "font-weight": "bold" };
    alert(!temp);
    结果:false

     

    var temp = { color: "#A60000", "font-weight": "bold" };
    alert(!!temp);
    结果:true

     

      通过!或!!把各种类型转换成bool类型的惯例

    □ 对null的"非"返回true

    var temp = null;
    alert(temp); 
    结果:null

     

    var temp = null;
    alert(!temp); 

    结果:true

     

    var temp = null;
    alert(!!temp); 
    结果:false

     

    □ 对undefined的"非"返回true

    var temp;
    alert(temp);
    结果:undefined

     

    var temp;
    alert(!temp);

    结果:true

     

    var temp;
    alert(!!temp);

    结果:false

     

    □ 对空字符串的"非"返回true

    var temp="";
    alert(temp);
    结果:空

     

    var temp="";
    alert(!temp);
    结果:true

     

    var temp="";
    alert(!!temp);

    结果:false


    □ 对非零整型的"非"返回false

    var temp=1;
    alert(temp);
    结果:1

     

    var temp=1;
    alert(!temp);
    结果:false

     

    var temp=1;
    alert(!!temp);

    结果:true

     

    □ 对0的"非"返回true

    结果:0

    var temp = 0;
    alert(temp);

     

    var temp = 0;
    alert(!temp);
    结果:true

     

    var temp = 0;
    alert(!!temp);
    结果:false

     

    □ 对字符串的"非"返回false

    var temp="ab";
    alert(temp);
    结果:ab

     

    var temp="ab";
    alert(!temp);
    结果:false

     

    var temp="ab";
    alert(!!temp);
    结果:true

     

    □ 对数组的"非"返回false

    var temp=[1,2];
    alert(temp);

    结果:1,2

     

    var temp=[1,2];
    alert(!temp);
    结果:false

     

    var temp=[1,2];
    alert(!!temp);
    结果:true
  • 相关阅读:
    改变Edit的光标(使用CreateCaret,ShowCaret和LoadBitmap三个API函数)
    浅析Delphi Container库(有开源的DCLX)
    Delphi接口的底层实现(接口在内存中仍然有其布局,它依附在对象的内存空间中,有汇编解释)——接口的内存结构图,简单清楚,深刻 good
    Asp.Net在多线程环境下的状态存储问题
    C#程序中注释过多的8条理由
    CentOS 6.4 编译安装LLVM3.3,Clang和Libc++
    Microsoft 2013校园招聘笔试题及解答
    代码契约CodeContract(八)
    T-SQL 临时表、表变量、UNION
    BST&AVL&红黑树简单介绍
  • 原文地址:https://www.cnblogs.com/darrenji/p/3666667.html
Copyright © 2020-2023  润新知