Boolean() 函数、相等和不相等(== 和 !=)、逻辑非操作符(!)
来源:互联网 发布:计量型数据 编辑:程序博客网 时间:2024/06/06 06:42
Boolean() 函数、相等和不相等(== 和 !=)、逻辑非操作符(!)这三类放在一起经常会弄混,所以今天特地做一总结和比较。
(以下内容摘自《 JavaScript 高级程序设计(第三版)》)
1、Boolean() 函数
一般在流控制语句里需要使用 Boolean 类型,所以在流控制语句里会自动执行相应的 Boolean 转换,将非 Boolean 类型的数据类型转换成 Boolean 类型,比如 if 语句、while 语句里条件判断。 下表给出各种数据类型及其对应的转换规则。
2、逻辑非操作符(!)
逻辑非操作符由一个叹号(! )表示,可以应用于 ECMAScript 中的任何值。无论这个值是什么数据类型,这个操作符都会返回一个布尔值。逻辑非操作符首先会将它的操作数转换为一个布尔值,然后再对其求反。也就是说,逻辑非操作符遵循下列规则:
- 如果操作数是一个对象,返回 false;
- 如果操作数是一个空字符串,返回 true;
- 如果操作数是一个非空字符串,返回 false;
- 如果操作数是数值 0,返回 true;
- 如果操作数是任意非 0 数值(包括 Infinity) ,返回 false;
- 如果操作数是 null,返回 true;
- 如果操作数是 NaN,返回 true;
- 如果操作数是 undefined,返回 true。
alert(!false); // true
alert(!"blue"); // false
alert(!0);
// true
alert(!NaN); // true
alert(!""); // true
alert(!12345);
// false
逻辑非操作符也可以用于将一个值转换为与其对应的布尔值。而同时使用两个逻辑非操作符,实际上就会模拟 Boolean()转型函数的行为。其中,第一个逻辑非操作会基于无论什么操作数返回一个布尔值,而第二个逻辑非操作则对该布尔值求反,于是就得到了这个值真正对应的布尔值。当然,最终结果与对这个值使用 Boolean()函数相同,如下面的例子所示:
alert(!!"blue"); //true
alert(!!0); //false
alert(!!NaN);
//false
alert(!!""); //false
alert(!!12345); //true
3、相等和不相等( == 和 != )
ECMAScript 中的相等操作符由两个等于号(==)表示,如果两个操作数相等,则返回 true。而不相等操作符由叹号后跟等于号(!=)表示,如果两个操作数不相等,则返回 true。这两个操作符都会先转换操作数(通常称为强制转型) ,然后再比较它们的相等性。
在转换不同的数据类型时,相等和不相等操作符遵循下列基本规则:
- 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false 转换为 0,而true 转换为 1;
- 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;
- 如果一个操作数是对象,另一个操作数不是,则调用对象的 valueOf()方法,用得到的基本类型值按照前面的规则进行比较;
这两个操作符在进行比较时则要遵循下列规则。
- null 和 undefined 是相等的。
- 要比较相等性之前,不能将 null 和 undefined 转换成其他任何值。
- 如果有一个操作数是 NaN,则相等操作符返回 false,而不相等操作符返回 true。重要提示:即使两个操作数都是 NaN,相等操作符也返回 false;因为按照规则,NaN 不等于 NaN。
- 如果两个操作数都是对象,则比较它们是不是同一个对象。如果两个操作数都指向同一个对象,则相等操作符返回 true;否则,返回 false。
表达式
值
null == undefined
true
"NaN" == NaN
false
5 == NaN
false
NaN == NaN
false
NaN != NaN
true
false == 0
true
true == 1
true
true == 2
false
undefined == 0
false
null == 0
false
"5"==5
true
- Boolean() 函数、相等和不相等(== 和 !=)、逻辑非操作符(!)
- js Boolean函数和相等操作符规则
- 相等和不相等操作符,全相等和不全等操作符
- JavaScript(5) - 相等操作符(==和===)
- 1.Javascript运算符(1):逻辑非!;相等运算符==(Ⅰ)
- 关于Boolean==Boolean和Boolean=Boolean的启示
- Java编程思想学习心得(七)逻辑操作符和短路非短路
- $str1 = null; $str2 = false; echo $str1==$str2 ? ‘相等’ : ‘不相等’;
- hashCode不相等则equals一定不相等,equals相等则hashCode一定相等,覆盖equals时总要覆盖hashCode(记录一下)
- Java判断相等(==和equals()方法)
- Java判断相等(==和equals方法)
- 函数并使用逻辑非操作符
- JavaScript 相等和绝对相等(===)
- RxJava操作符——条件和布尔操作符(Conditional and Boolean Operators)
- 7.1.7 char str1[]="abc"和char str2[]="abc";str1和str2不相等
- JavaScript Boolean(逻辑)对象
- JavaScript Boolean(逻辑)对象
- JavaScript Boolean(逻辑)对象
- Mysql,Oracle数据操作基本方法
- FLEX4,在弹出界面修改或增加主界面的数据,并可实现分批出修改或增加
- i os 地图上绘制两点间路线
- 如何提高App的下载量
- C++实现数据结构中的单链表
- Boolean() 函数、相等和不相等(== 和 !=)、逻辑非操作符(!)
- HDU3501 Calculation 2 【欧拉函数】
- 在线编辑、调用Word、 Excel 、PowerPoint一款开源的微软提供 dsoframer
- HDU 1513 Palindrome
- i os UIScrollView
- 寻找数组中缺少的整数(Find the missing integer)
- 学习PostgreSQL
- 自体脂肪移植隆胸的最佳时机
- Managing Accounts