Javascript空字符串vs(null和undefined)

时间:2016-05-18 11:07:28

标签: javascript

我有一个对象

var data = {1:undefined,2:null,3:10,4:""}

我想将所有undefined和null值替换为0.我使用以下代码来执行此操作:

for (var index in data) {
    if (!data[index]) {
        data[index] = 0;
    }
}

我期待的结果是:{1:0,2:0,3:10:4:""} 但结果是:{1:0,2:0,3:10:4:0}因为它将空字符串视为null。是否知道行为?

我可以通过使用来检查它 (if(data[index] == undefined || data[index] == null)) 但我想知道上述解决方案的行为。

3 个答案:

答案 0 :(得分:1)

您可以添加typeof data[index] != 'string'



var data = {1:undefined,2:null,3:10,4:""}

for (var index in data) {
  if (!data[index] && typeof data[index] != 'string') {
    data[index] = 0;
  }
}

console.log(data)




答案 1 :(得分:0)

尝试:

if ((typeof <your variable> == "undefined") ||
    (       <your variable> == ""         )    ) {
    <your variable> = 0 ;
}

顺便问一下,你是否正在使用&#34; 1&#34;,&#34; 2&#34;索引?

答案 2 :(得分:0)

这是因为长度为0的字符串是“falsy”,这意味着如果它被评估为布尔值,它将转换为false。阅读“falsy”over here的更多信息。您可以通过以下方式修复代码:

for (var index in data) {
    if (typeof data[index] == "undefined" || data[index] == null) {
        data[index] = 0;
    }
}