0

私の理解では、このコードが返さ- null -れるはずなのになぜ返されるのでしょうか。文字列のように扱われているようです。- -null

var testvar = null;
alert(" - "+testvar+" - ");

それでおしまい。同じことが。にも当てはまりundefinedます。配列があるのでこれが機能する必要があります。ループして配列をループし、各項目を文字列である変数に追加します。

私はこれを持っています:

//'resp' variable is a JSON response, decoded with JSON.parse.  This part works fine.
var addOnEnd=null;
for (item in resp) {
    console.log(">"+item);
    addOnEnd += item+"\n";
}

console.logは、私が期待するもの、つまり応答内のすべての項目のリストを読み取ります。

ただし、forループの後でalert(addOnEnd)を実行すると、「undefined」(文字通り文字列)が返され、配列の残りの部分が返されます。

私は何が間違っているのですか?

4

4 に答える 4

2

結果は正しいです。とのtoString値が表示されています。nullundefined

空の文字列を置き換える場合は、それを実行します。

var testvar = null;
alert(" - "+ (testvar == null ? "" : testvar) +" - ");

var addOnEnd="";
for (item in resp) {
    item = item == null ? "" : item;
    console.log(">"+item, resp[item]);
    addOnEnd += item+"\n";
}
于 2012-09-15T17:51:04.337 に答える
2

これに変更します:

alert(" - " + (testvar || "") + " - ");

...この...

addOnEnd += (item || "") + "\n";

また、addOnEndをnullではなく空の文字列として初期化する必要があります。

このように、値が未定義の場合(ブール値として評価されると、falseが返されます)、空の文字列の「デフォルト」値が使用されます。

于 2012-09-15T17:49:25.930 に答える
1

null値は、文字列に連結(追加)されると、文字列「null」に強制変換されます。あなたが欲しいのはこれです。

var addOnEnd="";
for (item in resp) {
    console.log(">"+item);
    addOnEnd += item +"\n";
}
于 2012-09-15T17:51:49.747 に答える
0

問題はあなたのデータにあると思います。

var testvar = null;
alert(" - "+testvar+" - ");
// RESULT "- null -" --> as expected.  

var addOnEnd=null;
for (item in {key: "val1", key2: "val2"}) {
  console.log(">"+item);
   addOnEnd += item+"\n"; 
}
alert(addOnEnd)
//result (nullKey1\nKey2)
于 2012-09-15T17:52:19.663 に答える