Javascript返回错误

Javascript return error

本文关键字:错误 返回 Javascript      更新时间:2023-09-26

铬控制台的输出

z = selected_sheet()

返回

5 
undefined

z

返回

undefined

JavaScript代码

function selected_sheet(){
        $('.sheet_radio').each( function(){
            if (this.checked == true){
                var x = 5;
                console.log(x);
                return x;
            };
        });
    };

因此,我从控制台日志中得到了正确的输出,但z没有被设置为从console.log返回的同一项。

这是因为一次只能选择一个单选按钮。我将在一分钟内对此进行详细介绍。

这是你的代码:

function selected_sheet(){
        $('.sheet_radio').each( function(){
            if (this.checked == true){ `Entry Point`
                var x = 5;
                console.log(x);
                return x;
            };
        });
    };

如果选择单选按钮,控件将进入if条件Entry Point,因此输出为5,

但是,如果未选择单选按钮,则控制不会通过Entry Point,因为if条件失败,函数返回未定义。

如果你有任何问题,请告诉我。

问题

之所以出现这种情况,是因为.each执行的函数仅从该函数的作用域返回。它不会从selected_theet返回。

事实上,如果显式地使传递给每个显式的函数返回一个值,您会注意到z实际上从未设置:

 function selected_sheet() {
    $('.sheet_radio').each(function() {
        return 5;
    });
    // nothing is actually being returned
 };
 z = selected_sheet(); // z is undefined

解决方案

一种解决方案是在外部范围内为x设置默认值(或未定义),然后如果选中单选按钮,则将x的值设置为新值

function selected_sheet() {
    var x = 7; // set default to 7

    $('.sheet_radio').each(function() {
        if (this.checked == true) {
            x = 5; // set to new value
            console.log(x);
            return false; // stop iterating
        }
    });
    return x;
};

另一种方法是用选择器查询,看看是否有选中的单选按钮:

function selected_sheet() {
    if($('.sheet_radio:checked').length > 0) {
       return 5;
    } else {
        return 7; // this is the default if nothing is checked
    }
}

最后,这里有一个纯JavaScript解决方案:

function selected_sheet() {
    if( document.querySelector('.sheet_radio:checked') !== null) {
      return 5;
     } else {
       return 7; // this is the default if nothing is checked
   }
}

和一个简洁的版本

function selected_sheet() {
   return document.querySelector('.sheet_radio:checked') !== null? 5 : 7;
}