1

これは私のオリジナルのコードで、jquery deferreds/promises を使用したキャッシュです

var templateCache = {};

var retrieve = function (templateURL) {
    if (!templateCache[templateURL]) {
        templateCache[templateURL] = $.get(templateURL);
    }
    return templateCache[templateURL];
};

ワンライナーにしてみたかったので作ってみました

var templateCache = {};
var retrieve = function( templateURL ){
  return templateCache[ templateURL ] || templateCache[ templateURL ] = $.get( templateURL );
}

しかし、return ステートメントの左側が無効であるというエラーが表示され続けます

4

3 に答える 3

5

割り当ての前後にいくつかの括弧を追加します

return templateCache[ templateURL ] || (templateCache[ templateURL ] = $.get( templateURL ));

于 2013-09-30T14:11:41.210 に答える
3

||より優先順位が高い=

あなたのコードは として解析されていますが(a || b) = c、これは意味がありません。

代入を強制的に最初に行うには、括弧を追加する必要があります。

a || (b = c)
于 2013-09-30T14:12:09.277 に答える
1

これは、三項演算子を使用してそれを記述する別の方法です。

var retrieve = function( templateURL ){
    return templateCache[ templateURL ] ? templateCache[ templateURL ] : templateCache[ templateURL ] = $.get( templateURL );
};
于 2013-09-30T18:41:25.190 に答える