0

PHP では、次のように記述できます。

if(false !== ($value = someFunctionCall())) {
 // use $value
}

定義せずに JavaScript でこれに相当するものをどのように記述しますか?

var value;

この比較の前に?

4

3 に答える 3

1

あなたは書くだろう

if (value = someFunction()) {

PHP に関する自分の知識はそれほど信頼していませんが、式が暗黙的にブール値であるため、falseinステートメントとの明示的な比較は必要ないと思います。if(編集— 場合によっては、関数が明示的なブール値または「偽」と評価される「適切な」値のいずれかを返すことができる場合、はい、ブール値との明示的な比較が必要です。)

編集=—との間の古くからの混乱 (またはその可能性) についてきしむ場合は==、この構造を完全に避けることをお勧めします。等価比較が必要な場合もあれば、代入が必要な場合もあるという事実を除けば、何も問題はありません。

編集ああ、これは「値」がvar どこかで宣言されていることを前提としています。質問がステートメントのコンテキストで宣言を行う方法についてifである場合、答えはそれを行うことができないということです。

最終編集私は約束のようなものです—要約すると:

「値」が宣言されていると仮定します。

var value;

どこかで、次のようにします。

if (false !== (value = someFunction())) { ... }

PHP のオリジナルとほとんど同じセマンティクスを持っています。

于 2012-07-24T13:24:15.340 に答える
0

実行時に割り当てるだけで、JavaScript が自動的にvar宣言を追加します。

function foo(){
    return (Math.random() * 0.5) > 0;
}
if (false !== (f = foo())){
    alert('True!');
}
alert('f=' + f.toString());

jsFiddle の例

ただし、これは非常に悪い習慣です。最初に変数が必要なときと場所で、常に変数を宣言する必要があります。PHP と JS がこの構文を受け入れるからといって、それが良い習慣であるとは限りません。適切なスタイルは次のようになります。

var f = false;
if (false !== (f = foo())){
    alert('True!');
}
alert('f=' + f.toString());
于 2012-07-24T13:26:04.630 に答える
-1

これは JavaScript では非常に悪い習慣です。

あなたがするのが最善でしょう

if(!(var value = someFunctionCall())) { // use value //}

個人的には、前に定義すると思います。しかし、あなたの電話。メモリが心配な場合は、メモリを定義し、使用後に null にします。

于 2012-07-24T13:24:23.627 に答える