我知道你可以这样做:
function first(a){
a && console.log("true");
}
与:
相同function first(a){
if(a){
console.log("true");
}
}
然而,当我尝试这个时:
function first(a){
a && return false
}
它不起作用,它给我一个错误。为什么它会给我一个错误?
答案 0 :(得分:10)
return
只能在声明中使用。
在a && return false
中,它将成为表达式的一部分,这在语法上是错误的。
答案 1 :(得分:6)
如果你真的想这样做,你可以做类似
的事情return a && false || undefined
或者为了missno的缘故,
return ( a && false ) || undefined
由于&&
优先于||
,因此会首先对其进行评估 - 但是parens很酷,并且一直都是派对。
另外,请查看规范:http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf - 第68页向您展示表达式运算符(如new
)与return
等语句的区别(第93页)
答案 2 :(得分:0)
你可以把回报放在行的开头来获得你想要的效果:
return a && console.log("true");
return
是statement的一部分,不能放在需要表达式的位置(如逻辑运算符的操作数)。
答案 3 :(得分:0)
第一个只能起作用,因为&&是一个短路逻辑AND,这意味着只有当两个表达式都为真时才是真的
因此,如果A的计算结果为true(即A不为null,未定义或为空字符串),则还必须检查console.log(“true”)是否为true,从而调用方法
如果A为假,则表达式为false,因此无需调用方法(短路)
为了更清楚,如果你这样做
A & console.log("test")
无论A的值是什么,都会记录测试
第二个不起作用,因为它是一个自己的声明......它与尝试相同
if(A && return false) {
//doesn't work
}
正确的方法是
return A || B;
如果A评估为假,则返回B