Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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 这个代码会返回false吗?_Javascript_If Statement_Logic - Fatal编程技术网

Javascript 这个代码会返回false吗?

Javascript 这个代码会返回false吗?,javascript,if-statement,logic,Javascript,If Statement,Logic,我正在检查一些逻辑看起来有缺陷的代码。我不确定下面的代码是否会因为if-else返回流而返回false。我的问题是,下面的代码是否会返回false,甚至抛出错误 function performSearch(e) { if(e.keyCode === RETURN_KEY_KEYCODE) { var select = document.getElementById("selectmenusearch"); var selected = select.op

我正在检查一些逻辑看起来有缺陷的代码。我不确定下面的代码是否会因为if-else返回流而返回false。我的问题是,下面的代码是否会返回false,甚至抛出错误

function performSearch(e) {
    if(e.keyCode === RETURN_KEY_KEYCODE) {
        var select = document.getElementById("selectmenusearch");
        var selected = select.options[select.selectedIndex].value;
        if(selected === 'organisation') {
            submitSearchForm('<%= doOrganisationSearchURL %>');
        } else {
            submitSearchForm('<%= doIndividualSearchURL %>');
        }
    } else {
        return false;
    }
    return true;
}

注意:我知道重构时最好只有一个return语句,但在我看来有两个
else
语句

它取决于e.keyCode,但如果e.keyCode不总是等于RETURN\u KEY\u CODE,则它不会总是返回false。你有两次机会回来。如果是,则第一个在第一个的else中,如果是,则e.keyCode!==RETURN\u KEY\u代码,false为RETURN。否则,您将正常结束,并且返回true后的指令

function performSearch(e) {
    if(e.keyCode === RETURN_KEY_KEYCODE) {
        ...
    } else {
        return false;  // RETURN_KEY_KEYCODE !== e.keyCode
    }
    return true; // RETURN_KEY_KEYCODE === e.keyCode
}
我看不到任何等待,如果e.keyCode不总是相同的值,它总是会返回false。:)

如果你想说得更清楚,你可以把回报放在第一个If的末尾。就像这样:

function performSearch(e) {
    if(e.keyCode === RETURN_KEY_KEYCODE) {
        ...
        return true; // RETURN_KEY_KEYCODE === e.keyCode
    } else {
        return false;  // RETURN_KEY_KEYCODE !== e.keyCode
    }

}

只需运行一个测试。似乎您对函数中有多个“return”语句时会发生什么感到困惑

return语句是一个常规语句,就像其他语句一样,除了它会中断本地块执行并将流控制返回给调用函数的代码这一事实。你有一个,两个,三个回报这一事实对你来说是无关紧要的。。。语言解释器严格遵循IF/ELSE规则-如果满足条件,则块(以“{}”分隔)在if下定义的是执行的语句,如果不满足条件,则执行相应的if's else块。无论如何,if和else块在到达其末端时,都将返回流到if块之后的下一个语句(if块由if+else块组成),在这里的示例中,“return true”


e.keyCode!==RETURN\u KEY\u keyCode
时?不清楚您在问什么,看起来像是一个非常常规的if/else块它应该等于RETURN\u KEY\u code,因为它正在检查按键,如果按下了,则可以提交表单。我们同意,如果e.keyCode!==RETURN\u KEY\u code,代码将以“return false”?啊,是的,得到了它,所以如果它不是真的,那么它是return false,否则它仍然会执行代码,但也会返回真的…但是我认为最终的return语句与else语句相同,但没有else这个词?
function performSearch(e) {
    if(e.keyCode === RETURN_KEY_KEYCODE) {
        ...
        return true; // RETURN_KEY_KEYCODE === e.keyCode
    } else {
        return false;  // RETURN_KEY_KEYCODE !== e.keyCode
    }

}
(function() {
   if (k) {
      console('k renders true');
   }
   else {
      console.log('else reached');
      return false;
   }
   return true;
   console.log('bottom return true reached');
})();