mozilla
Your Search Results

    为什么条件表达式的后两个表达式都不能为空?

    以下代码能正常工作 :

    Array.prototype.filter = function(iterator) {

    var ret = [];

    for(var i in this) {

    iterator(this[i])? ret.push(this[i]): {};

    }

    return ret;

      }

    为什么以下代码不能工作:

     

    Array.prototype.filter = function(iterator) {

    var ret = [];

     

    for(var i in this) {

    iterator(this[i])? ret.push(this[i]): ;

    }

    return ret;

      }

    他们唯一的区别就是:

    iterator(this[i])? ret.push(this[i]): {}; 被替换成了 iterator(this[i])? ret.push(this[i]): ;

     MDC对条件表达式参数的解释是:

     condition : 可以被计算成true或者false的表达式。

     expr1,expr2:可以返回任何类型值的表达式。

     可见后两个表达式要有返回值,显然空语句是不会有返回值的,而为什么把空语句替换成{}就能正常工作了呢?可能的原因是{}声名了一个空对象,初始化为undefined,所有{}是有值的,符合MDC的说明,说以能正常运行。

     

     

    Document Tags and Contributors

    Tags: 
    Contributors to this page: Admin, Xingxing.Xu
    Last updated by: Xingxing.Xu,