需要AngularJS / Javascript三元运算符代码说明

时间:2017-01-16 23:29:44

标签: javascript angularjs angular-material ternary-operator deferred

我在Angular Material网站上看到了这段代码:

function querySearch (query) {
      var results = query ? self.states.filter( createFilterFor(query) ) : self.states,
          deferred;
      if (self.simulateQuery) {
        deferred = $q.defer();
        $timeout(function () { deferred.resolve( results ); }, Math.random() * 1000, false);
        return deferred.promise;
      } else {
        return results;
      }
    }

任何人都可以解释这里发生的事情吗?

如果查询不为空,我们调用过滤器,否则我们返回状态,那是什么“,deffered”部分?

deferred尚未创建,我们也无法返回多个值!

那么这段代码的解释是什么?

代码在这里: https://material.angularjs.org/latest/demo/autocomplete 第一个(基本用法)

1 个答案:

答案 0 :(得分:3)

这就是为什么三元组对可读性不利的原因。该逗号与三元无关,因为它附加在变量声明中。

所有这一切都是声明(未定义)变量deferred

您可以使用逗号语法一次多次声明变量:

var x = 4,
    y = 7,
    z = Math.random();