如何在有条件之后作出回报?

时间:2018-01-17 00:50:51

标签: javascript if-statement return conditional return-value

嘿,为什么我们不能在JS中做到这一点?

valur&&返回valur;

例如

function inGUI(x, y){ // check if is in gui
    for (var i = DEBUG.children.length;i--;){
        var gui = DEBUG.children[i];
        var check = isInside.call(gui,x,y);
        check && return check; // not work

    };
};

为什么我需要制作IF条件

if(check){return check}

编辑: 谢谢大家; 有趣的方式@dave:

function inGUI(x, y){ // check if is in gui
    var is_inside = false;
    for (var i = this.children.length; !is_inside; i--){
        var gui = this.children[i];
        is_inside = isInside.call(gui,x,y);
    };
    return is_inside;
};

太酷了

2 个答案:

答案 0 :(得分:2)

因为javascript的语法不允许它。

  

expr1&&表达式2

     

&安培;&安培;如果可以转换为false,则返回expr1;否则,返回expr2。因此,当与布尔值一起使用时,&&如果两个操作数都为真,则返回true;否则,返回false。

return不是表达式,因此无法用作expr1expr2

因为如果expr1可以转换为false,它将“返回expr2”,你基本上是在说var x = return true,这显然(我希望)不起作用 - (return是一个语句,而不是表达式,所以不能以这种方式使用)。

如果您想简化代码,可以这样做:

function inGUI(x, y){ // check if is in gui
    var is_inside = false;
    for (var i = DEBUG.children.length; !is_inside; i--;){
        var gui = DEBUG.children[i];
        is_inside = isInside.call(gui,x,y);
    };
    return is_inside;
};

答案 1 :(得分:2)

return是一个陈述而非表达。差异是表达式求值为可以在表达式上下文中使用的值。

如果return是表达式,您可以像这样使用它,但您也可以执行console.log(return 5);var x = return 1;之类的操作。由于返回还会停止执行函数的其余部分,因此不清楚究竟应该做什么。 return成为一个语句更有意义,这意味着它不能在预期值的地方使用,例如&&运算符的操作数。