3

私はJavascriptで次の構成をよく使用しました。

var foo = other_var || "default_value";

Javascriptでは、左側が偽の場合、右側の値が割り当てられます。

これは非常に便利で、長くて不必要に明示的な3項式を書く手間が省けます。

この種の構成の名前はありますか?

ボーナス:三項演算子を使用せずにPHPでこれを行うためのトリックはありますか?

PS:別の変形は、デフォルト値を与える代わりに、真の値を取得しない場合にエラーをスローすることです。

var foo = something || alert("foo is not set!");
4

5 に答える 5

2

論理演算子または(通常は||)演算子は、多くの言語で大幅に異なります。

一部(C、C ++など)では、「左側を評価します。trueの場合はtrueを返し、そうでない場合は右側を評価し、trueまたはfalseの場合はtrueを返します。」ここでは、結果は常にブール値になります。

他のもの(Javascript、Python、PHPもそうだと思います)では、「左側を評価します。trueの場合はそれを返し、そうでない場合は右側を評価して結果を返します」のようになります。次に、結果は任意のタイプにすることができ、次のような構成を行うことができます。

a = (b || c); // equivalent to a = b ? b : c;

またはかなり空想:

function compare(A, B) { // -1 if A<B, 0 if A==B, 1 if A>B
    return B.x - A.x || B.y - A.y;
}
于 2010-11-15T18:19:59.997 に答える
1

それは単にORコンストラクトと呼ばれていると思います。ここに割り当ての使用に関する多くの良い例があります:http: //php.net/manual/en/language.operators.assignment.php

于 2010-11-15T18:00:32.683 に答える
1

これは機能します:

$mytruevalue = true;
$foo = $mytruevalue or $foo = "20";
echo $foo;

上記は(true)"1"の文字列表現であるために出力されます。true$mytruevalue

$myfalsevalue = false;
$foo = $myfalsevalue or $foo = "20";
echo $foo;

ただし、これはfalseで"20"あるため印刷されます。$myfalsevalue

両方の値がに等しい場合、false何も出力されません。

お役に立てれば。

于 2010-11-15T18:16:47.987 に答える
1

これは単なる論理OR演算子です。javascriptの詳細については、リンクをたどってください。

ドキュメントの例から:

o1=true || true       // t || t returns true
o2=false || true      // f || t returns true
o3=true || false      // t || f returns true
o4=false || (3 == 4)  // f || f returns false
o5="Cat" || "Dog"     // t || t returns Cat
o6=false || "Cat"     // f || t returns Cat
o7="Cat" || false     // t || f returns Cat

編集:ボーナスに関しては、次のようにすることで、最近のバージョンのPHPの3値と同様のことができるように見えます。

expr1 ?: expr3

PHPドキュメントから:

PHP 5.3以降、三項演算子の中央部分を省略できます。式expr1?:expr3は、 expr1がTRUEと評価された場合はexpr1を返し、それ以外の場合はexpr3を返します。

私はPHPに精通していないので、結果を知りたいと思います。

于 2010-11-15T18:02:02.807 に答える
0

この種の構成の名前はありますか?

論理OR演算子です。

ボーナス:三項演算子を使用せずにPHPでこれを行うためのトリックはありますか?

いいえ、PHPでは、ternay演算子の助けを借りてのみこれを行うことができます。

于 2010-11-15T18:04:05.023 に答える