Javascript 函数返回一个错误(ESLint)将函数移动到正文根

Javascript 函数返回一个错误(ESLint)将函数移动到正文根,javascript,eslint,Javascript,Eslint,我有以下函数。代码完成了我需要它做的事情,但是由于声明的原因,它的结构不正确,因此它给出了“(ESLint)move function to body root”错误: 这是我的代码: function onSuccess(result) { if (result) { function GetTotal(result) { var totBal = 0;

我有以下函数。代码完成了我需要它做的事情,但是由于声明的原因,它的结构不正确,因此它给出了“(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);
            }
        }
函数成功(结果){
如果(结果){
函数GetTotal(结果){
var-totBal=0;
var str='R';
对于(变量i=0;i
这就是我所尝试的:

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);
        }
    }
函数成功(结果){
var-fn;
如果(结果){
fn=函数GetTotal(结果){
var-totBal=0;
var str='R';
对于(变量i=0;i

“(ESLint)move function to body root”得到解决,但在上面的示例中,它返回一个错误,表示“getTotal未定义”

在第二个示例中,函数现在位于变量
fn
内。您可以通过调用
fn()
来访问它。另一个选项是重命名变量以反映函数行为,然后用新名称调用它

var-fn;
fn=函数GetTotal(结果){
log('function called!');
}

fn()在第二个示例中,函数现在位于变量
fn
内。您可以通过调用
fn()
来访问它。另一个选项是重命名变量以反映函数行为,然后用新名称调用它

var-fn;
fn=函数GetTotal(结果){
log('function called!');
}

fn()然后函数声明在右边。它成为左侧变量的局部变量。在主功能范围中使用名称
GetTotal
,而不是
fn

function onSuccess(result) {
        var GetTotal;
        if (result) {
          GetTotal = function(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);
        }
    }
函数成功(结果){
var GetTotal;
如果(结果){
GetTotal=函数(结果){
var-totBal=0;
var str='R';
对于(变量i=0;i
然后函数声明在右侧。它成为左侧变量的局部变量。在主功能范围中使用名称
GetTotal
,而不是
fn

function onSuccess(result) {
        var GetTotal;
        if (result) {
          GetTotal = function(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);
        }
    }
函数成功(结果){
var GetTotal;
如果(结果){
GetTotal=函数(结果){
var-totBal=0;
var str='R';
对于(变量i=0;i
您可以按照ESLint的建议将函数移动到body root,如下所示

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);
  }
}
函数成功(结果){
函数GetTotal(结果){
var-totBal=0;
var str='R';
对于(变量i=0;i
或者干脆扔掉这个函数,因为它在一个函数中,而且你似乎不再使用它了

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
  }
}
函数成功(结果){
如果(结果){
var-totBal=0;
var str='R';
对于(变量i=0;i
您可以按照ESLint的建议将函数移动到body root,如下所示

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);
  }
}
函数成功(结果){
函数GetTotal(结果){
var-totBal=0;
var str='R';
对于(变量i=0;i
或者干脆扔掉这个函数,因为它在一个函数中,而且你似乎不再使用它了

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
  }
}
函数成功(结果){
如果(结果){
var-totBal=0;
var str='R';
对于(变量i=0;i
为什么要在如此有限的范围内定义函数?为什么不直接进行计算呢?你不能在任何地方重复使用函数,所以你不需要额外的语法来定义它。或者,为什么不把函数移到body root?为什么要在如此有限的范围内定义函数?为什么不直接进行计算呢?你不能在任何地方重复使用这个函数,所以你不需要额外的语法来定义它?