3.9 ECMAScript条件运算符及表达式
在ECMAScript语法中,条件运算符是表现形式上比较复杂的一种,实际上如果将其理解为一种特殊的表达式似乎更为恰当。在ECMAScript语法中,具体对于条件运算符表达式的定义如下:
variable = boolean_expression ? true_value : false_value;
如何理解上面这段关于条件运算符表达式呢?首先,要判断布尔表达式(boolean_expression)的取值,如果为“true”时则返回true_value给变量(variable);而如果为“false”时则返回false_value给变量(variable)。同时,对于条件运算符表达式的格式要严格按照上面的书写方式执行,问号(?)和冒号(:)的位置一定要写对,要把布尔表达式和两个返回值隔开。
下面,来看一个使用条件运算符表达式的代码示例(详见源代码ch03目录中ch03-js-operator-conditional.html文件)。
【代码3-32】
01 <script type="text/javascript"> 02 var es = "ecmascript"; 03 var js = "javascript"; 04 var vReturn_greater = (es > js) ? "ecmascript" : "javascript"; 05 console.log('(es > js) ? "ecmascript" : "javascript" = ' + vReturn_greater); 06 var vReturn_less = (es < js) ? "ecmascript" : "javascript"; 07 console.log('(es < js) ? "ecmascript" : "javascript" = ' + vReturn_less); 08 var vReturn_true = (true) ? "ecmascript" : "javascript"; 09 console.log('(true) ? "ecmascript" : "javascript" = ' + vReturn_true); 10 var vReturn_false = (false) ? "ecmascript" : "javascript"; 11 console.log('(false) ? "ecmascript" : "javascript" = ' + vReturn_false); 12 var vReturn_1 = (1) ? "ecmascript" : "javascript"; 13 console.log('(1) ? "ecmascript" : "javascript" = ' + vReturn_1); 14 var vReturn_0 = (0) ? "ecmascript" : "javascript"; 15 console.log('(0) ? "ecmascript" : "javascript" = ' + vReturn_0); 16 </script>
关于【代码3-32】的分析如下:
第02~03行代码定义了两个字符串变量(es和js),分别初始化赋值为“ecmascript”和“javascript”;
第04行代码使用条件运算符判断布尔表达式(es > js)的结果,为“真”时则返回字符串“ecmascript”,否则返回字符串“javascript”;
同样,第06行代码使用条件运算符判断布尔表达式(es < js)的结果,为“真”则返回字符串“ecmascript”,否则返回字符串“javascript”;
而第08行和第10行代码中,条件运算符的布尔表达式直接为“true”和“false”,相当于直接确认返回第一个或第二个返回值;
同样,第12行和第14行代码中,条件运算符的布尔表达式直接为“1”和“0”,等同于“true”和“false”。
页面效果如图3.35所示。
图3.35 ECMAScript条件运算符
从第05行和第07行代码输出的结果来看,字符串进行比较的布尔表达式结果如果为“真”,则返回第一个返回值("ecmascript"),否则返回第二个返回值("javascript");
从第09行和第11行代码输出的结果来看,如果布尔表达式直接定义为“true”,则返回第一个返回值("ecmascript");而如果直接定义为“false”,则返回第二个返回值("javascript");
同样,从第13行和第15行代码输出的结果来看,如果布尔表达式直接定义为数值1,则返回第一个返回值("ecmascript");而如果直接定义为数值0,则返回第二个返回值("javascript")。