1

を必要と私は角材質のウェブサイトにこのコードを見て:AngularJS/Javascriptの三項演算子コードの説明は

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; 
     } 
    } 

ここで起こっていただきました!誰も説明できますか?

クエリがnullでない場合、フィルタを呼び出すと、状態が返され、その内容は"、除外された"の部分が返されます。

deferedはまだ作成されていません。複数の値を返すことはできません!

このコードの説明は何ですか?

コードはここにある: https://material.angularjs.org/latest/demo/autocomplete 最初のもの(基本的な使い方)

答えて

3

三元系は、読みやすさのために悪い理由です。そのコンマは変数宣言に添付されているので、三項とは何の関係もありません。

これは、(未定義の)変数deferredを宣言することです。

あなたはそのようなコンマ構文を使用して一度に複数の変数を宣言することができます。

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

AAAA、今私は理解しています。彼らは私たちにこれをするべきではありません! –

+0

雇用保障の世界へようこそ、コードはとても悪く複雑なので、選択肢はありません。 –

+0

私たちは時には実際の結果と時には約束を返すことができますか?呼び出し側でどのように結果を区別することができますか? –