0

次の JavaScript コードが 321 でアラートを生成し、PHP コードが 1 を生成する理由を説明してください。

PHP コードが式を評価し、true または false を返すことは知っています。私が知らないのは、JavaScript で三項演算子のように機能する理由です。それは、言語で実装された方法だけですか?

var 何か = false;
var somethingelse = (何か || 321);
アラート(何か); // アラート 321
$var = '123';
$other = ($var || 321);
$その他をエコーし​​ます。// 出力 1

ありがとう!

4

4 に答える 4

3

それは、言語で実装された方法だけですか?

はい、JavaScript では少し異なります。この式(something || 321)は、somethingの値の場合、代わりにデフォルト値の321が使用されることを意味します。

条件式では、通常どおり||論理的に機能しますORが、実際には同じ合体操作を実行します。これは、次の方法でテストできます。

if ((0 || 123) === true)
    alert('0 || 123 evaluates to a Boolean');
else
    alert('0 || 123 does not evaluate to a Boolean');

PHP では、||演算子は論理ORを実行し、ブール値の結果を返します。

于 2011-03-23T22:23:15.920 に答える
0

PHP では($var || 321);評価され、 に割り当てられ$otherます。

これを PHP で使用できます。

($other = $var) || $other = 321;

更新:BoltClock が Javascript で述べたvar somethingelse = (something || 321) ように、変数にデフォルト値を割り当てようとするのsomethingは false の場合です。

于 2011-03-23T23:29:12.113 に答える
0

私は実際に、javascript が 1 または true を警告しなかったことに驚いています。js に必要な構文は次のとおりです。

var somethingelse = something || 321;

何かを括弧で囲むと、それが真/偽として評価されます。PHPの場合、あなたは言っています:

//$other will equal true if $var is true or 321 is true. 
$other = ($var || 321);

php での一致するステートメントは次のようになります。

$other = ($var) ? $var : 321;
于 2011-03-23T22:27:45.847 に答える
0

コメントできないので、boltClockの回答を追加するだけです-ブール値にしたい場合は、次のようにブール値に解析できます。

var somthing = !!(somthingelse || 321);
于 2011-03-23T23:06:37.357 に答える