1

if ステートメントを次のように連結したいと思います。

policeRecord = "Hi" + (if (x < crimes.length) {", ";});

三項を使用してそれを行うことができることを私は知っています:

policeRecord = "Hi" + ((x < crimes.length) ? ", " : "");

しかし、完全な if ステートメントでそれを行うことはできますか?

4

4 に答える 4

3

ifステートメントです。の一部としてステートメントを使用することはできません。

通常、式は演算子と部分式で構成され、値を作成します。ステートメントはこれらのカテゴリのいずれにも属さず、式でも演算子でもありません。

技術的な情報については、ECMAScript の仕様 ( http://es5.github.com/ ) を参照してください。

于 2013-03-01T01:16:57.227 に答える
1

いいえ、それは無効な JavaScript 構文なので実行できません。

私は実際にそれが明確さの喪失を引き起こすと思っているので、なぜあなたがそれをしたいのかわかりません(そこにはたくさんのシンボルのごちゃ混ぜがあります)。

三項演算子を使用せずに人々を混乱させるために、ある種の派手なワンライナーを実行したい場合は、要素の長さに基づいて配列/文字列操作を行うことができます。

policeRecord = "Hi" + (new Array(+(x < crimes.length) + 1)).join(', ');
于 2013-03-01T01:15:39.333 に答える
0

ifステートメントであり、値を返しません?が、は演算子です。

注目すべきは、関数ステートメントと関数演算子があるので、次のfunctionことができます

function () { }  // function statement

そして、あなたもすることができます

var fn = function () { };  // function operator

簡単な答え:ifと?を交換または交換することはできません。それを実行する関数を作成することはできますが、関数を実行してもネイティブ式のパフォーマンスは得られません

于 2013-03-01T01:29:57.717 に答える
0

SQLのような関数を作成することもできます (ただし、代わりに をCOALESCEチェックします)。trueNULL

function iftrue(checkThis, returnIfTrue, returnIfFalse) {
    if(checkThis) {
        return returnIfTrue;
    }
    return returnIfFalse;
}
policeRecord = "Hi" + iftrue(1 < crimes.length, ", ", "");

ただし、それがどれほど良いかはわかりません。

于 2013-03-01T02:11:08.940 に答える