0

如果满足条件,我想返回一个值,但如果不满足,则执行一个函数。

我遇到了一个错误

function is_equal(a,b){
    a === b ? return true : do_something(a,b);
}

但我得到了错误。Unexpected token return虽然有一次我这样做了,但我得到了Unexpected token false

这有效:

return a === b ? true : do_something(a,b);

但这是否以某种方式从一个不打算返回任何东西的函数中返回一些东西?三元不是这个的正确选择吗?MDN 页面没有说明不应该这样使用它的文档。它确实表明它们以几乎所有其他可以想象的方式使用......谢谢!

4

2 回答 2

4

出现错误的原因是条件运算符的操作数是表达式,但却return语句。在 JavaScript 中,您可以将表达式放在预期的语句位置,但反之则不行。尝试return在条件运算符的操作数内使用是无效的,原因与var a = return false;无效的原因相同。

如果满足条件,我想返回一个值,但如果不满足,则执行一个函数。

没有双关语,但这就是if陈述的目的:

function is_equal(a,b){
    if (a === b) {
        return true;
    }
    else {
        do_something(a,b);
    }
}

请注意,这意味着is_equal如果undefined您调用do_something. 交替:

function is_equal(a,b){
    return a === b ? true : do_something(a,b);
}

...如果您想返回do_something, 或的结果:

function is_equal(a,b){
    if (a === b) {
        return true;
    }
    else {
        do_something(a,b);
        return false;
    }
}

可以在一行中执行上述操作,但我不建议这样做:

function is_equal(a,b){
    return a === b ? true : (do_something(a,b), false);
}

true当它们相等时它将返回,或者如果它们不相等则调用do_something然后返回false

于 2013-08-06T21:41:13.937 回答
0

您不能那样使用条件运算符。只需使用if

function is_equal(a,b) {
    if (a === b) return true;
    do_something(a,b);
}

请参阅EcmaScript 规范,了解在条件运算符中允许作为表达式的确切内容。

于 2013-08-06T21:40:53.617 回答