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