15天学会JavaScript(视频教学版)
上QQ阅读APP看书,第一时间看更新

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")。