• JavaScript布尔型数据与==运算符。


    今天在蓝色中看到一篇文章,对js 中布尔型及==运算符进行了一番比较分析。

    不看不知道,一看吓一跳,平时还真的没有注意到这么细节的东西:

    所谓大牛与菜鸟,估计这是重要的区别之一了。

    说到布尔型,估计不少人都知道JS中非0即为true,那么请您运行一下下面这两行代码:

    1 var iTest=2;
    2 if(iTest)
    3 {
    4    alert(true);
    5 }
    6 if(iTest==true)
    7 {
    8    alert(true);
    9 }

    你觉得答案是多少呢?

       答案是: true true

       ----对不起,其实答案是 true false,但我相信,上面才是不少人以目中的第一答案。

      为了让大家,也为了让我能记住,或者是知道有这么一些我们容易忽略的东西,我将记录一下这些区别或细节:

      一、单纯的布尔值运行,的确是非0为true,如:
     

     1   var i1=1;
     2   var i2=-1;
     3   var i3=0;
     4   alert(Boolean(i1)); //true
     5   alert(Boolean(i2)); //true
     6   alert(Boolean(i3)); //false
     7   if(i1){}  //true
     8   if(i2){} //true
     9   if(i3){} //false 

       二、==运算符并不是简单的将非0的转为true,反之为false,反而是:

         1、If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.
              If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).

             也就是说:如果某一个操作数为bool型,那么它会被转换成数字进行比较,而规则是:true->1 false->0

             如:

           

     1 var i1=-2;
     2 var i4=2;
     3 var i2=1;
     4 var i3=0;
     5 if(i1==true) {} //将把true->1,因此 1!=-2 false
     6 if(i2==true) {} //将把true->1,因此1==1  true
     7 if(i3==true) {} //这个很明显了。 false
     8 if(i4==true){]  //将把true->1,因此2!=1  false
     9 ////但是,下面就不同了:
    10 if(i1){} //相当于Boolean(-2) ,非0,因此为true   true
    11 if(i2){} //非0,因此为ture
    12 if(i3){} //0,因此为false
    13 if(i4){} //非0,因此为true

        2、If Type(x) is Number and Type(y) is String, return the result of the comparison x == ToNumber(y).
            If Type(x) is String and Type(y) is Number, return the result of the comparison ToNumber(x) == y.

            也就是说某一操作数为字符串,另一个是number时,字符串为转换为number,如:
        

    1 var a = "1";
    2 var b = "001";
    3 var c = "";
    4 
    5 if(a==1){} //a=>number(a) true
    6 if(b==1){} //b=>number(b) true
    7 if(c==1){} //b=>0 false

        3、非空字符串会被转换成true(而null和undefined为false),如:
      

    1 var a="a";
    2 var b="";
    3 if(a){} //true
    4 if(b){} //false

    ------

     说到这里,想起jQuery的$,这个东东选取元素时,结果返回jQuery对象,无论元素是否存在。

     因此不能用if($('#id'))来判断是否选取到。而可以用$('#id').length>0来判断.

      原文章地址:http://www.blueidea.com/tech/web/2010/7576.asp

    ------

    <h3>
       心静似高山流水不动,心清若巫峰雾气不沾。
    </h3>
  • 相关阅读:
    C# 普印力RFID打印机模板打印
    C# IP地址段端口扫描器封装调用
    W3100SMS 短信猫代码发送 下
    C#动态创建Access数据库,创建加密码Access数据库,更改Access密码
    C# 区分键盘和红外线扫描枪输入 模拟扫描枪
    文件格式大全
    winform获取当前Url地址
    [WPF]使用C#代码实现DataTemplate
    钩子类型
    WM_*
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1732114.html
Copyright © 2020-2023  润新知