我有以下函数。代码执行了我需要做的事情,但是由于声明而结构不正确,因此给出了“((ESLint)move function to body root”的错误:
这是我的代码:
function onSuccess(result) {
if (result) {
function GetTotal(result) {
var totBal = 0;
var str = 'R';
for (var i = 0; i < result.length; i++) {
totBal += result[i].Price;
}
str += totBal.toFixed(2);
return str;
}
var span = document.getElementById("Total");
span.innerHTML = GetTotal(result);
}
}
这是我尝试过的:
function onSuccess(result) {
var fn;
if (result) {
fn=function GetTotal(result) {
var totBal = 0;
var str = 'R';
for (var i = 0; i < result.length; i++) {
totBal += result[i].Price;
}
str += totBal.toFixed(2);
return str;
};
var span = document.getElementById("Total");
span.innerHTML = GetTotal(result);
}
}
解决了“((ESLint)将函数移到主体根部”的问题,但是上面的代码返回了一个错误,提示“未定义getTotal”
答案 0 :(得分:1)
在第二个示例中,该函数现在位于变量fn
中。您可以通过调用fn()
来访问它。另一种选择是重命名变量以反映函数的行为,然后使用新名称对其进行调用。
var fn;
fn=function GetTotal(result) {
console.log('function called!');
}
fn();
答案 1 :(得分:1)
您可以按照ESLint的建议将函数移至主体根部
function onSuccess(result) {
function GetTotal(result) {
var totBal = 0;
var str = 'R';
for (var i = 0; i < result.length; i++) {
totBal += result[i].Price;
}
str += totBal.toFixed(2);
return str;
}
if (result) {
var span = document.getElementById("Total");
span.innerHTML = GetTotal(result);
}
}
或者还是要摆脱该函数,因为它位于函数内部,并且您似乎不再使用它。
function onSuccess(result) {
if (result) {
var totBal = 0;
var str = 'R';
for (var i = 0; i < result.length; i++) {
totBal += result[i].Price;
}
str += totBal.toFixed(2);
var span = document.getElementById("Total");
span.innerHTML = str
}
}
答案 2 :(得分:0)
然后函数声明在右侧。它成为左侧变量的局部变量。在主函数作用域中使用名称setState()
代替GetTotal
。
fn