Javascript空字符串vs(null和undefined)

Javascript Empty String vs (null and undefined)

本问题已经有最佳答案,请猛点这里访问。

我有一个对象

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

我想用0替换所有未定义和空值。我正在使用以下代码来执行此操作:

1
2
3
4
5
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},因为它将空字符串视为空字符串。这是已知的行为吗?

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


您可以添加EDOCX1[0]

1
2
3
4
5
6
7
8
9
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)


这是因为长度为0的字符串是"falsy",这意味着如果将其作为布尔值计算,它将转换为false。在这里阅读更多关于"falsy"的内容。您可以通过以下方式修复代码:

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


尝试:

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

顺便问一下,您使用的是"1"、"2"索引吗?