0

おそらく混乱したjavascriptnoobからの非常に基本的な質問...

なぜか

var hasthisvalue = null;
if (hasthisvalue)
    print("hasthisvalue hs value");

var hasthatvalue = "";
if (hasthatvalue)
    print("hasthatvalue has value");

何も印刷しませんが、これら2つを組み合わせると

var combined = "hasthisvalue" + "hasthatvalue";
if (combined)
    print ("combined has value");

します?

またはもっと直接的に:

var combined = null + "";
if (combined)
    print ("combined has value");

値を持たない2つの変数のみを追加した場合、「combined」に値があるのはなぜですか?私は何が欠けていますか?

4

2 に答える 2

3

それらを別々に比較すると、それぞれがチェックでに変換さfalseれます。ifそれらを組み合わせるnullと、は文字列"null"になるため、それらの連結は文字列"null"になります。これはに変換されません。false

于 2012-05-27T11:54:35.940 に答える
2

最初の2つの例は、値が「偽」である状況です。これらの値は、大まかな比較false中と同じです。

  • ヌル
  • 未定義
  • 空白の文字列
  • ブールfalse
  • 数字0
  • NaN

このリストにない他の値は「真実」であり、大まかな比較trueでは同じです。

3番目のケースでは、コンソールで試すことができます。null+''文字列になります:"null"したがって、真実です。

于 2012-05-27T12:00:28.033 に答える