将三元运算符转换为传统if语句时未定义的变量
Undefined variable when converting a ternary operator into traditional if statement
我正在使用eslint来修复我的骨干应用程序中的一些编码标准。我在视图中有以下函数(简化代码):
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。我在这个转换中哪里出错了? 在原代码中,trigger
调用值为"foo"
或"bar"
。
在您更新的代码中,trigger
被称为与函数。
您从未调用您用条件替换的函数。
我会保留条件版本,但如果你想使用你的替代方案,调用你的函数:
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";
}());
// ^^--------------- Note
});
}
}
如果你需要删除条件,但是,我不会这样做。而不是:
getData: function(foo){
var self = this;
$.when(foo).then(function(){
var doUpdate = false;
self.makeAjaxRequest().done(function(data){
var triggerWith;
if (doUpdate === false) {
triggerWith = "foo";
} else {
triggerWith = "bar";
}
self.trigger(triggerWith);
});
}
}
旁注:除非你真的需要特别是检查false
而不是其他各种假值,这在代码中似乎不是这种情况,只有if (!doUpdate)
而不是if (doUpdate === false)
是通常的方法。
为什么不在调用self.trigger
之前直接使用if子句呢?
self.makeAjaxRequest().done(function(data) {
if (doUpdate) {
self.trigger("bar");
} else {
self.trigger("foo");
}
});
我对我的Backbone有点生疏,但我想它是不可能使用' Backbone. events .trigger与一个函数作为参数。但是,可以把它变成一个生命(或者使它成为一个命名函数)。
self.trigger((function(){
if(doUpdate === false) {
return "foo";
}
return "bar";
}()));
或作为命名函数
function getUpdateEventName(doUpdate) {
if(doUpdate === false) {
return "foo";
}
return "bar";
}
self.trigger(getUpdateEventName(doUpdate));
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 如何在ReactJS JSX中执行嵌套的if-else语句
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- Sharepoint JScript if语句未执行
- Javascript:If-then语句在函数中不起作用
- for循环中的javascript if语句找不到==
- jquery if语句返回return wong语句
- 在if语句下的html中使用javascript变量
- 将错误与if语句混淆
- 如何检查if/else语句中的随机条件
- 循环通过数组的If语句不起作用
- jQuery模板中的If语句
- 如何从数据库中回显If语句
- 如何减少if语句的数量
- Node.js-承诺和锥形语句(if、switch等)-如何构建
- 如何在嵌套ng重复指令中使用控制语句(if语句)
- 如何创建语句if包含"&"
- If语句- If主体有一个类remove在滚动原生javascript
- Javascript中的if语句- if - else问题