奇怪的Javascript结果

Bizarre Javascript Result

本文关键字:结果 Javascript      更新时间:2023-09-26

根据我的理解,为什么这段代码在应该返回- -的情况下却返回- 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循环之后提醒(addOnEnd),它会返回"undefined"(字面上是字符串),然后返回数组的其余部分。

我做错了什么?

将其更改为:

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

而这个。。。

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

您还需要将addOnEnd初始化为空字符串,而不是null

这样,如果该值未定义(作为布尔值计算时返回false),它将使用空字符串的"默认"值。

结果是正确的。您看到的是nullundefinedtoString值。

如果要替换一个空字符串,请执行该操作。

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";
}

当连接(添加)到字符串时,null值被强制为字符串"null"。你想要的就是这个。

var addOnEnd="";
for (item in resp) {
    console.log(">"+item);
    addOnEnd += item +"'n";
}

我怀疑问题出在您的数据上。

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)