JavaScript布尔型数据与==运算符。
来源:互联网 发布:cmd连接mysql数据库 编辑:程序博客网 时间:2024/05/19 12:15
今天在蓝色中看到一篇文章,对js 中布尔型及==运算符进行了一番比较分析。
不看不知道,一看吓一跳,平时还真的没有注意到这么细节的东西:
所谓大牛与菜鸟,估计这是重要的区别之一了。
说到布尔型,估计不少人都知道JS中非0即为true,那么请您运行一下下面这两行代码:
2 if(iTest)
3 {
4 alert(true);
5 }
6 if(iTest==true)
7 {
8 alert(true);
9 }
你觉得答案是多少呢?
答案是: true true
----对不起,其实答案是 true false,但我相信,上面才是不少人以目中的第一答案。
为了让大家,也为了让我能记住,或者是知道有这么一些我们容易忽略的东西,我将记录一下这些区别或细节:
一、单纯的布尔值运行,的确是非0为true,如:
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
如:
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,如:
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),如:
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
------
- JavaScript布尔型数据与==运算符。
- 布尔型与关系运算符的结合使用
- 布尔逻辑运算符、位运算符与布尔赋值运算符
- Javascript——布尔值、关系运算符、逻辑运算符
- 布尔赋值运算符
- Javascript的布尔型
- js中的布尔运算符
- 布尔型数据
- javascript ||与&&运算符
- 布尔运算
- 布尔运算
- 布尔运算
- 隐藏特性:C#的“|”与“&”运算符(没有短路特性的布尔运算符)
- javascript中布尔操作符
- JavaScript算术运算符与表达式 赋值运算符(+,=)
- 浅谈JavaScript空数组[]和空对象{}的布尔运算
- asp.net(c#)中的逻辑(布尔型)运算符以及其他运算符
- JAVA里的布尔运算符
- oracle 11g R2 RAC检查
- MFC自定义消息用法总结
- 是否反红酒佛问价格范围和管委会规划符合
- Tomcat自动重新加载改动后的类文件
- Android初学------MD5加密
- JavaScript布尔型数据与==运算符。
- 另一条路去IOE:全内存数据库弯道超车
- 日反弹股热帖好让她忽然听见软件推荐
- 仿360一键清理实现(二)
- 文件下载
- 关于"MDRV: cannot find lrun root directory . Please check your M_LROOT"问题解决
- vasms开发注意事项
- VPN服务启动失败---'Could not find the pppd binary.'
- Java中断机制的一些摘抄