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返されることを意味することに注意してください。別の方法:undefineddo_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;
    }
}

上記を 1 行で実行できますが、お勧めしません。

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 に答える