gpt4 book ai didi

javascript - 将三元运算符转换为传统 if 语句时 undefined variable

转载 作者:行者123 更新时间:2023-11-28 13:13:46 26 4
gpt4 key购买 nike

我正在使用 eslint 来修复我的主干应用程序中的一些编码标准。我在 View 中有以下函数(简化代码):

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 。我在这个转换中哪里出了问题?

最佳答案

在原始代码中,使用值“foo”“bar”调用trigger

在更新后的代码中,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) 是通常的方式。

关于javascript - 将三元运算符转换为传统 if 语句时 undefined variable ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40399058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com