zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    G. Yash And Trees 线段树 + dfs序 + bitset
    网络流最小割 H
    P2764 最小路径覆盖问题 网络流重温
    P4016 负载平衡问题 网络流重温
    D. Yet Another Subarray Problem 思维 难 dp更好理解
    J
    20190709 暑训 区间种类数 莫队的学习
    E
    线段树 离散化 E. Infinite Inversions E. Physical Education Lessons
    CbsPersist
  • 原文地址:https://www.cnblogs.com/darrenji/p/3666667.html
Copyright © 2011-2022 走看看