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;
};
太酷了
答案 0 :(得分:2)
因为javascript的语法不允许它。
expr1&&表达式2
&安培;&安培;如果可以转换为false,则返回expr1;否则,返回expr2。因此,当与布尔值一起使用时,&&如果两个操作数都为真,则返回true;否则,返回false。
return
不是表达式,因此无法用作expr1
或expr2
。
因为如果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
成为一个语句更有意义,这意味着它不能在预期值的地方使用,例如&&
运算符的操作数。