Javascript返回语句错误

时间:2013-09-30 14:08:36

标签: javascript jquery caching return

这是我的原始代码,它是使用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语句的左侧无效

3 个答案:

答案 0 :(得分:5)

在作业周围添加一些括号

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

答案 1 :(得分:3)

||的优先级高于=

您的代码被解析为(a || b) = c,这没有任何意义。

您需要添加括号以强制分配首先发生:

a || (b = c)

答案 2 :(得分:1)

这是使用三元运算符编写它的另一种方法。

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