PHP では、次のように記述できます。
if(false !== ($value = someFunctionCall())) {
// use $value
}
定義せずに JavaScript でこれに相当するものをどのように記述しますか?
var value;
この比較の前に?
PHP では、次のように記述できます。
if(false !== ($value = someFunctionCall())) {
// use $value
}
定義せずに JavaScript でこれに相当するものをどのように記述しますか?
var value;
この比較の前に?
あなたは書くだろう
if (value = someFunction()) {
PHP に関する自分の知識はそれほど信頼していませんが、式が暗黙的にブール値であるため、false
inステートメントとの明示的な比較は必要ないと思います。if
(編集— 場合によっては、関数が明示的なブール値または「偽」と評価される「適切な」値のいずれかを返すことができる場合、はい、ブール値との明示的な比較が必要です。)
編集=
—との間の古くからの混乱 (またはその可能性) についてきしむ場合は==
、この構造を完全に避けることをお勧めします。等価比較が必要な場合もあれば、代入が必要な場合もあるという事実を除けば、何も問題はありません。
編集ああ、これは「値」がvar
どこかで宣言されていることを前提としています。質問がステートメントのコンテキストで宣言を行う方法についてif
である場合、答えはそれを行うことができないということです。
最終編集私は約束のようなものです—要約すると:
「値」が宣言されていると仮定します。
var value;
どこかで、次のようにします。
if (false !== (value = someFunction())) { ... }
PHP のオリジナルとほとんど同じセマンティクスを持っています。
実行時に割り当てるだけで、JavaScript が自動的にvar
宣言を追加します。
function foo(){
return (Math.random() * 0.5) > 0;
}
if (false !== (f = foo())){
alert('True!');
}
alert('f=' + f.toString());
ただし、これは非常に悪い習慣です。最初に変数が必要なときと場所で、常に変数を宣言する必要があります。PHP と JS がこの構文を受け入れるからといって、それが良い習慣であるとは限りません。適切なスタイルは次のようになります。
var f = false;
if (false !== (f = foo())){
alert('True!');
}
alert('f=' + f.toString());
これは JavaScript では非常に悪い習慣です。
あなたがするのが最善でしょう
if(!(var value = someFunctionCall())) { // use value //}
個人的には、前に定義すると思います。しかし、あなたの電話。メモリが心配な場合は、メモリを定義し、使用後に null にします。