if ステートメントを次のように連結したいと思います。
policeRecord = "Hi" + (if (x < crimes.length) {", ";});
三項を使用してそれを行うことができることを私は知っています:
policeRecord = "Hi" + ((x < crimes.length) ? ", " : "");
しかし、完全な if ステートメントでそれを行うことはできますか?
if ステートメントを次のように連結したいと思います。
policeRecord = "Hi" + (if (x < crimes.length) {", ";});
三項を使用してそれを行うことができることを私は知っています:
policeRecord = "Hi" + ((x < crimes.length) ? ", " : "");
しかし、完全な if ステートメントでそれを行うことはできますか?
if
はステートメントです。式の一部としてステートメントを使用することはできません。
通常、式は演算子と部分式で構成され、値を作成します。ステートメントはこれらのカテゴリのいずれにも属さず、式でも演算子でもありません。
技術的な情報については、ECMAScript の仕様 ( http://es5.github.com/ ) を参照してください。
いいえ、それは無効な JavaScript 構文なので実行できません。
私は実際にそれが明確さの喪失を引き起こすと思っているので、なぜあなたがそれをしたいのかわかりません(そこにはたくさんのシンボルのごちゃ混ぜがあります)。
三項演算子を使用せずに人々を混乱させるために、ある種の派手なワンライナーを実行したい場合は、要素の長さに基づいて配列/文字列操作を行うことができます。
policeRecord = "Hi" + (new Array(+(x < crimes.length) + 1)).join(', ');
if
はステートメントであり、値を返しません?
が、は演算子です。
注目すべきは、関数ステートメントと関数演算子があるので、次のfunction
ことができます
function () { } // function statement
そして、あなたもすることができます
var fn = function () { }; // function operator
簡単な答え:ifと?を交換または交換することはできません。それを実行する関数を作成することはできますが、関数を実行してもネイティブ式のパフォーマンスは得られません。
SQLのような関数を作成することもできます (ただし、代わりに をCOALESCE
チェックします)。true
NULL
function iftrue(checkThis, returnIfTrue, returnIfFalse) {
if(checkThis) {
return returnIfTrue;
}
return returnIfFalse;
}
policeRecord = "Hi" + iftrue(1 < crimes.length, ", ", "");
ただし、それがどれほど良いかはわかりません。