使用“return false”是一种好习惯吗?基本上说在if语句中什么都不做?例如:
if (navigator.userAgent.match(/iPad/i) != null) {
return false;
} else {
//Usual script here
}
只是想知道这是否有任何挫折。我可以在没有else的情况下使用if语句,但我只想深入了解这一点。我有一个插件,我不想在iPad上运行,所以我把它包装在有条件的。任何意见将不胜感激!
答案 0 :(得分:9)
第1组会说这很糟糕,因为很难遵循。
第2组会说这样做。
第3组会说这样做,但是在第1行
第4组会说不要使用else
第5组会说不要使用return,只需使用if你要运行的代码。 AKA:
if (navigator.userAgent.match(/iPad/i) === null) {
//Usual script here
}
答案 1 :(得分:5)
根据我的经验,只有你实际上是在寻找要归还的假。
答案 2 :(得分:2)
您可以进一步简化它,如下所示:
if (navigator.userAgent.match(/iPad/i) != null) return false;
//Usual script here
这是“良好做法”......确定,如果它适用于您和您的团队。一旦你无所事事就跳出一个函数,这是一种非常有效的方法,只要对于那些正在处理它的人来说它很容易理解和维护。
您是否希望false
具体取决于具体情况,例如,如果您想要返回但不阻止其他事件处理程序稍后运行,则可能需要return true;
。
答案 3 :(得分:1)
首先,这是非常好的做法,以此为例
var window.__page_loaded__;
var Loadpage = function ()
{
if(window.__page_loaded__ != undefined)
{
return; //The page has already laoded
}
//Proceed to load the page
}
使用return;
,你使用else
语句,但没有额外的块,而Loadpage()
通常不会返回任何数据削减你的代码。
答案 4 :(得分:0)
如果调用者要使用该值执行某些操作,则只应返回值。如果你想在if语句中做“无”,那就表明你的逻辑是错误的。将您的陈述改为:
if (navigator.userAgent.match(/iPad/i) == null) {
//Usual script here
}
这样你就不需要通过返回来“破坏”你的函数(在这种情况下不是一个好习惯)。
答案 5 :(得分:0)
我同意 snkmchnb ,否则只是否定了这个条件。您可以使用以下方法否定长表达式:
!(a && b) = !a || !b
!(a || b) = !a && !b
并多次使用这些来获得你想要的东西。例如,否定长表达式
!( (a && b || c) && (d || e) || f) =
!((a && b || c) && (d || e)) && !f =
(!(a && b || c) || !(d || e)) && !f =
(!(a && b) && !c || !d && !e) && !f =
((!a || !b) && !c || !d && !e) && !f
现在看起来很丑陋,但大多数时候否定并不意味着过于复杂。例如,否定“< =”会导致“>”
所以永远不要使用!(long_expression):
if (long expression)
{
}
else
{
//do stuff here
}