我正在使用eslint来修复我的 Backbone 应用程序中的一些编码标准。我在一个视图中有以下函数(简化代码):
getData: function(foo){
var self = this;
$.when(foo).then(function(){
var doUpdate = false;
self.makeAjaxRequest().done(function(data){
self.trigger(doUpdate === false ? "foo" : "bar");
});
}
}
我需要将三元运算符转换为标准的if语句,所以我尝试了以下方法:
getData: function(foo){
var self = this;
$.when(foo).then(function(){
var doUpdate = false;
self.makeAjaxRequest().done(function(data){
self.trigger(function(){
if(doUpdate === false) {
return "foo";
}
return "bar";
});
});
}
}
不幸的是,它似乎在代码中引起了问题。我想知道我是否正确地引用了doUpdate。在这个转换中我哪里出了问题?
3条答案
按热度按时间ecr0jaav1#
在原始程式码中,
trigger
会以"foo"
或"bar"
的值呼叫。在更新后的代码中,
trigger
是通过函数 * 调用的 *。您从未调用替换条件的函数。
我会保留条件版本,但是如果你想使用你的替代方法,call 你的函数:
但是,如果你需要删除条件句,我不会这样做,而是:
旁注:除非你真实的的需要 * 特别 * 检查
false
,而不是其他各种虚假的值,这在代码中似乎不是这样的,否则通常的方法是if (!doUpdate)
而不是if (doUpdate === false)
。vd8tlhqk2#
为什么不在调用
self.trigger
之前直接使用if子句呢?5fjcxozz3#
我对我的Backbone有点生疏了,但是我想用Backbone.Events.trigger作为一个函数的参数是不可能的。但是你 * 可以 * 把它变成一个life(或者把它变成一个命名函数)。
或作为命名函数