有什么不同?以及为什么它会在函数a()中得到错误?
function a(){
1 == 1 ? return true: ""; // Uncaught SyntaxError: Unexpected token return
}
function b(){
1 == 1 ? console.log(true):""; // correct
}
function c(){
if (1==1) return true; // correct
}
答案 0 :(得分:3)
return
是一个语句:它只能像<{1}}语句一样独立存在( ),并且不能被解析为值。条件运算符仅需要值(表达式)。其语法为:
if
其中cond ? expr1 : expr2
,cond
和expr1
都是表达式。如果expr2
为真,则整个条件运算符的计算结果为expr1
,否则为cond
。
同样,这是无效的:
expr2
在条件运算符的1 === 1
? if (foo) {
// do something
}
: ''
和:
之后放置的内容必须始终计算为一个值-也就是说,它必须是 expression < / em>。 :
仅是一条语句,不能求值(就像return
语句不能求值)。
if
是 表达式,其结果为console.log
。
如果仅在undefined
中满足条件,则仅返回true
,则必须使用完整的a
:
if
如果您想在满足条件的情况下返回function a() {
if (1 == 1) {
return true;
}
// other statements here
}
,否则返回空字符串,则可以将true
放在左侧并使用条件运算符:
return
需要条件创建表达式时,请使用条件运算符。如果除了创建条件表达式外还需要执行其他操作(例如,如果要满足条件则要function a() {
return 1 == 1
? true
: '';
}
特定值,否则继续执行其余函数),则应使用{{1 }}。