JavaScript中的布尔类型
JavaScript中逻辑运算有3种:且&&
,或||
,非!
,不过在说这三种逻辑运算之前,先解释一下JavaScript中的布尔类型。
JavaScript和其它高级语言一样,布尔类型有true和false两种,但是与其它语言不同的地方,也是JavaScript很奇妙的一个地方是,JavaScript中的任何类型都可以转化成布尔类型,转化规则如下:
可以转换为
false
的:false
,0
,null
,undefined
,空字符串""
和''
,NaN
可以转换为
true
的:上面可转换为false
以外的所有数据都转换为true
也就是说,我们以后在if条件判断中,很多时候没有必要去使用等于去判断,而是直接使用要判断的对象就可以了,比如下面的代码:
var a; |
直接使用
var a; |
或者直接使用三元运算符:
var a; |
当然这么用要具体需求具体看,毕竟0和空字符串也会被转换成false,但是0和空字符串有时却又是合法的业务逻辑,所以这点要注意
javascript中逻辑运算的返回值
言归正传,一般的,我们所说的逻辑运算,都是对布尔类型的运算,与&&
运算时当且仅当两边都是true
时才返回true
,否则返回false
,或||
运算是当且仅当两边都是false
时返回false
,否则返回true
,非!
运算时取反,当判断是true
时返回false
,当判断是false
时返回true
,注意了,这是一般的思维,毕竟像java,C#等等高级语言都是这样的,JavaScript的用法也基本是这样,但是又不一样!JavaScript的逻辑运算规则如下:
与
&&
:如果左边表达式判断是false
,则返回左边表达式的值,否则返回右边表达式的值或
||
:如果左边表达式判断为true
,则返回左边表达式的值,否则返回右边表达式的值非
!
:如果表达式判断为true
,则返回false
,否则返回true
与或的返回值便于理解的记忆方法:
从左到右都转换成布尔类型计算时,当运算到这个表达式就决定了整个与或的结果,就返回这个表达式。
注意了,与&&
和或||
运算最终返回的是表达式的值!回的是表达式的值!回的是表达式的值!重要的事情说三遍。这个值不一定是布尔类型的true
或者false
,可以是其他类型的值!!!这有什么用呢?
曾几何时,我们是否写过这样的代码:
function f(a, b) { |
我们可以简化成:
function f(a, b) { |
这样写,一方面代码量少了,另一方面代码不会显得那么low。
总之,就是记住与&&
和或||
的运算规则,从左向右开始运算,并返回表达式的值,而非true
或false
。当然,如果表达式返回的是true
或者false
,那与&&
和或||
返回的也就是true
或者false
了。而我们经常会写一些简单的if判断,一个判断做一个事,另一个判断做另一件个事,这样判断完全可以用与&&
和或||
来代替,让代码看起来更美观,换句话说就是,与&&
和或||
的作用是可以处理逻辑运算,另一个重要的作用就是用来代替if做判断!
如果你看一些开源项目的源码,比如jquery等,与&&
和或||
在里面用的是很多的,多数都是代替if
做判断!
javascript中非运算
非!
运算就比较简单了,一般就是拿来取反的,对true
返回false
,对false
返回true
,但是还有一种特性,上面的运算规则可以看到,非!
运算返回的始终是布尔类型,这样,当我们确切需要某些值必须是布尔类型是,这个运算就很有用,比如jQuery
的each
函数,当且仅当函数返回false
时,就会跳出遍历,如下面的代码:
var a = [1, null, 3]; |
可以写成:
var a = [1, null, 3]; |
总之,熟悉逻辑运算的规则,熟练使用逻辑,可以简化我们的代码,使代码看起来简洁舒适。