为什么这段代码会在我的理解返回- 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'(字面意思是字符串),然后返回数组的其余部分。
我做错了什么?
答案 0 :(得分:2)
将其更改为:
alert(" - " + (testvar || "") + " - ");
......而这......
addOnEnd += (item || "") + "\n";
您还需要将addOnEnd初始化为空字符串而不是null。
这样,如果值未定义(当评估为boolean返回false时),它将使用空字符串的'default'值。
答案 1 :(得分:2)
结果是正确的。您看到toString
和null
的{{1}}值。
如果要替换空字符串,请执行此操作。
undefined
和
var testvar = null;
alert(" - "+ (testvar == null ? "" : testvar) +" - ");
答案 2 :(得分:1)
当catentated(添加)到字符串时,null值被强制转换为字符串“null”。 你想要的是这个。
var addOnEnd="";
for (item in resp) {
console.log(">"+item);
addOnEnd += item +"\n";
}
答案 3 :(得分: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)