0

このコードの何が問題になっていますか?

var sha = 6;
var secondParameter = dan || sha;
alert(secondParameter);

多くのブラウザで試しました。アラートなし。次のように var dan を追加すると:

var sha = 6;
var dan = 5;
var secondParameter = dan || sha;
alert(secondParameter);

アラートが発生します。「||」の問題です。このような演算子を使用する多くのコードを見ました! だから私はわからない..

4

5 に答える 5

7

danが定義されていません。そのエラーで実行が停止します。ブラウザ コンソールでエラーを確認します。

を定義するdanと、実行が続行されますが、それはおそらくあなたが望むものではありません。

JavaScript でのこのようなコードの目的はdan、 が偽の値 (値に評価される任意のfalse値、つまり0''nullfalseundefinedまたはNaN) を持っている場合、 の値を使用することですsha

定義danがあなたの責任を超えている場合 (つまり、他のスクリプトで設定する必要がある場合)、次のような構成を使用してその存在を確認できます。

secondParameter = typeof(dan) == 'undefined' ? sha : dan;

(テストされていません。うまくいけばうまくいくでしょう。:)とにかく、それはあなたにアイデアを与えるはずです)

論理演算子に関するドキュメントについては、こちらを確認してください

また、次の質問でさらに洞察が得られるかもしれません: Javascript || または未定義の変数を持つ演算子

于 2013-06-25T01:55:58.020 に答える
1

これは、パラメーターのようなものとして指定されているが、値が割り当てられていないか、値が割り当てられていない状況で使用されますfalsy

falsyであること0, false, null or undefined

例えば:

var sha = 6;
var dan = undefined;
var secondParameter = dan || sha;
alert(secondParameter);

あなたは得るでしょう6

これを使用する良い例は次のようになります。

function funcWithCallback(callback){
     callback = callback || function(){};
     callback();
}

この例では、コールバックが未定義 (またはfalsy) の場合、コールバックを関数の新しいインスタンスとして設定します。

このような状況で使用すると、エラーが発生しなくなります

于 2013-06-25T01:56:04.800 に答える
0

説明: この方法 || 動作は次のとおりです。最初の条件が false の場合、2 番目の条件をチェックします。したがって、2 番目のパラメーターを表示するには、最初のパラメーターを null にする必要があります。

于 2013-06-25T01:57:10.283 に答える