JavaScript实验:逻辑判断符&&、||与!

与C、Java等语言一样,JavaScript中可以用&&、||、!三个逻辑判断符来对boolean值进行逻辑判断。与C、Java不同的是,JavaScript中逻辑与(&&)和逻辑或(||)操作符可以应用在任何值上,而操作结束后返回的也不一定是boolean值。

逻辑与&&的处理规则

JavaScript中&&的处理规则是这样的:

  1. 判断第一个值是否为Falsy。如果为Falsy,则直接返回第一个值(不一定为boolean类型)。
  2. 如果第一个值为Truthy,则直接返回第二个值(不一定为boolean类型)。
var o = {x:1, y:2};  
console.log(o && o.y);//2  
console.log(null && x);//null  

逻辑或||的处理规则

与&&操作符类似,JavaScript中||的处理规则是这样的:

  1. 判断第一个值是否为Truthy。如果为Truthy,则直接返回第一个值(不一定为boolean类型)。
  2. 如果第一个值为Falsy,则直接返回第二个值(不一定为boolean类型)。

||操作符的这种行为使得JavaScript中一些快捷写法成为现实:

  • 从一系列值中获取第一个Truthy值:
var a = null;  
var b = 42;  
var v = a || b || 100;  
console.log(v);//42  
  • 对函数中的参数赋以默认值:
function test(p){  
  p = p || {};//if p is not passed, make it an empty object.
}

与&&和||不同,!操作符的行为与C、Java等语言是一致的,只返回boolean值(true或false)。

本文实验代码: http://jsfiddle.net/cshao/9VJZ7/

Chuan Shao

Read more posts by this author.

Shanghai

Subscribe to Chuan's blog

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!