这个代码会返回false吗
Will this code ever return false?
我正在查看一些逻辑看起来有缺陷的代码。我不确定下面的代码是否会因为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;
}
所以在我看来,流量就像
if (this condition is true) {
//execute some code
} else {
return false
}
else return true
注意:我知道重构为只有一个return语句会更好,但在我看来有两个else
语句。
它依赖于e.keyCode,但如果e.keyCode不总是等于RETURN_KEY_CODE,则它不会总是返回false。您有2次退货。第一个在第一个if so if e.keyCode!==的else中RETURN_KEY_CODE,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的else块。无论是什么情况,if和else块在到达其末端时,都将返回到if块之后的下一个语句(if块由if+else块组成),在这里的示例中,"返回true"。
(function() {
if (k) {
console('k renders true');
}
else {
console.log('else reached');
return false;
}
return true;
console.log('bottom return true reached');
})();
相关文章:
- Array.every返回false,而不是类型error
- Javascript If else 只返回 TRUE 或只返回 FALSE
- 为什么当我在数组上测试regex时,它会返回false
- 过滤器返回true或false
- 检查文本区域是否为空总是返回false
- PHP strtotime()为JavaScript日期字符串返回false
- onsubmit返回false,但submit仍然执行
- 这个代码会返回false吗
- Ajax向表单返回false
- 表单验证JavaScript编号总是返回false
- 使用!而in运算符在应该为true时返回false,为什么
- 如何使以下函数返回true或false
- jQuery.is(':checked')总是返回false
- 为什么 javascript 返回对象位置 true 或 false
- Javascript 下划线每个总是返回 false
- 提交返回 false 总是在 jquery 中
- 为什么 1.2 == true 返回 false 如果布尔值 (1.2) 实际上是真的
- 如何使用angular或javascript在基于true/false返回的html中显示值
- Javascript:奇怪的行为' empty string '和' false '返回空字符串
- NaN是伪造的吗?为什么NaN===false返回false