Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript在错误返回后执行代码_Javascript - Fatal编程技术网

JavaScript在错误返回后执行代码

JavaScript在错误返回后执行代码,javascript,Javascript,我正在使用一个函数检查必填字段是否已填充。我有这两个函数,它们应该做同样的事情,但是第一个没有。javascript不应该在遇到返回后停止执行代码吗 此函数返回true: //Checks if various stages are ready function trnReady(area) { switch (area) { case 'settings': $('input.required').each(function(){

我正在使用一个函数检查必填字段是否已填充。我有这两个函数,它们应该做同样的事情,但是第一个没有。javascript不应该在遇到返回后停止执行代码吗

此函数返回true:

//Checks if various stages are ready
function trnReady(area) {
    switch (area)
    {
        case 'settings':
            $('input.required').each(function(){

                if($(this).val() == '')
                {
                    return false;
                }
            }); 
        break;
    }
    return true;
}
当这个返回false时:

//Checks if various stages are ready
function trnReady(area) {
    var r = true;
    switch (area)
    {
        case 'settings':
            $('input.required').each(function(){

                if($(this).val() == '')
                {
                    r = false;
                }
            }); 
        break;
    }
    return r;
}

我以为第一次返回会停止执行代码?我想知道它是否与作用域有关?

这些函数中的每一个都包含嵌套在其内部的第二个函数,而您期望的是嵌套函数中的返回值会生效,但它们不会生效。不能从内部函数返回外部函数的调用方。最好在内部函数中设置一个变量,然后从外部函数返回该变量的值,就像第二个示例一样。

在第一个示例中,函数返回
false
,但仅在当前case语句的范围内。您的
false
具有任何效果,任何操作在发生时都不会被调用

编辑:
Return false仅在传递给
的匿名函数中有效。每个
在第一个代码段中,
返回值
应用于作为
每个
参数的函数。
返回
不适用于
trnReady
功能。因此,
返回false
用于
中的匿名函数

在第二个代码段中,
return
正确地表示
trnReady
函数的
return
,因此它工作正常。

是一个迭代器,它将每个对象传递给您定义的函数

当定义的函数返回true时,迭代继续(到下一个对象)l 当函数返回false时,迭代停止

但仅停止迭代


代码点击了
break
,但是在这种情况下没有其他
return
语句要执行。

在第一个代码段
return false仅停止执行传递给jquery每个方法的内部函数。它还根据jQueryAPI停止jquery迭代。但无论如何,trnReady返回true


第二个代码段是正确的,但您可以对其进行优化,替换
r=false
返回r=false(当您已经知道其中一个字段未填充时,jquery将停止迭代)

它确实停止执行代码。。。但仅在您执行
返回的函数中,这是传递给
.each()
的函数。调用方不返回函数的返回值:)混淆OP的行为是由
each
中的匿名函数引起的,而不是
case
语句。谢谢您提供的优化提示!