0

条件ステートメントの値をすぐに参照する IF ステートメントを書いていることがよくあります。たとえば、文字列がパターンに一致するかどうかを確認する必要があるとします。

if (mystring.match(/mypattern/) {
    var mymatch = mystring.match(/mypattern/)[1];
    ...
};

私が探しているものが存在しないのではないかと思いますが、関数内で「引数」を参照できるように、if ブロック内で条件ステートメントの値を参照できるかどうか疑問に思っていました。もちろん、多くの場合、次のように書き換えることができます。

var mymatch = mystring.match(/mypattern/)[1];
if (mymatch) { ... };

しかし、一連のメソッドが呼び出されている場合、それはしばしば不可能です。例えば:

var mymatch = $('.myclass')[0].text().match(/mypattern/)[1];

... .text() を呼び出す項目 [0] がない場合、例外がスローされます。私が見逃している便利な速記はありますか?または、物事を整理するためのより良い方法はありますか? 好奇心旺盛です、本当に — 答えがノーなら、私は生き続けます。

4

1 に答える 1

1

必要に応じて、代入演算子が JavaScript で値を返すという事実を利用できます。たとえば、次のように記述できます。

if (assignedTest = testedValue) {
   //value of assignedTest is now available 
   //and conditional will only be executed if true

これは、RHS に互換性があるか適切にセットアップされている場合に使用できますが=割り当てと比較==/を混同しやすいため、読みやすさに関する大きな問題でもあり===ます。

これを追求することに特に動機付けられている場合は、このタイプの機能を信頼できる方法で動作する関数に抽出できます: クロージャの結果を名前付き変数に代入するなど、動作をさらに調整して他のことを行うことができます。 (オプションでテスト内の別の値に評価するなど)。ただし、最終的には、主に単純な構造をより複雑にすることになります。

于 2012-11-02T02:04:00.777 に答える