Javascript在if语句中返回false

时间:2010-09-14 17:30:11

标签: javascript if-statement return

使用“return false”是一种好习惯吗?基本上说在if语句中什么都不做?例如:

if (navigator.userAgent.match(/iPad/i) != null) {
    return false;
} else {
    //Usual script here
}

只是想知道这是否有任何挫折。我可以在没有else的情况下使用if语句,但我只想深入了解这一点。我有一个插件,我不想在iPad上运行,所以我把它包装在有条件的。任何意见将不胜感激!

6 个答案:

答案 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
}