14.6.2 三元操作符
根据某种条件来设置一个变量的值,这是一种常见的编程任务。例如,假设想要设置一个变量,其中包含了用户的登录状态的文本。在脚本中,有一个名为login的变量,它包含了一个布尔值,如果用户登录了,这个值为true,否则,这个值为false。下面是针对该情况创建一个新变量的一种方法:
var status;
if(login){
status='Logged in';
}else{
status='Not logged in';
}
在这个例子中,一条基本的条件语句(参见3.1.1节)根据用户是否登录来设置名为status的一个变量的值。JavaScript提供了这种常见过程的一个快捷方式,叫做三元操作符。三元操作符提供了一行命令创建一个简单的条件语句的方法。三元操作符的基本格式如下:
(condition)?A:B
根据这个条件的结果,要么返回A(如果条件为true),要么返回B(如果条件为false)。?位于true结果的前面,而:位于false的结果的前面。例如,上面的代码可以重新写为如下的样子:
var status=(login)?'Logged in':'Not logged in';
曾经的6行代码变成了一行简单的代码。图14-6示意了这段代码是如何工作的。
图 14-6 三元操作符允许我们编写只有一行的条件语句。在这个例子中,1是条件。如果条件为true,将返回紧跟在?后面的代码(2);如果条件为false,将返回紧跟在:后的代码(3)
三元操作符只是一个简写方式,我们不一定必须使用它,并且,一些程序员认为它太过精简而不好理解,并且宁愿使用易于阅读的if/else语句。此外,三元操作符最好的用处是根据一个条件来设置一个变量的值。它并不是适用于所有类型的条件语句;例如,对于根据一个特定条件有多行代码执行的多行语句来说,就不能使用三元操作符。但是,即便不使用三元操作符,认识它们是如何工作的也可以帮助我们理解其他人的程序,因为我们可能会经常碰到它。