Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript空字符串vs(null和未定义)_Javascript - Fatal编程技术网

Javascript空字符串vs(null和未定义)

Javascript空字符串vs(null和未定义),javascript,Javascript,我有一个目标 var data = {1:undefined,2:null,3:10,4:""} 我想用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。这是已知的行为吗 我可以用电脑检查一

我有一个目标

var data = {1:undefined,2:null,3:10,4:""}
我想用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。这是已知的行为吗

我可以用电脑检查一下
(如果(数据[索引]==未定义| |数据[索引]==空))

但是我想知道上述解决方案的行为。

您可以添加
typeof data[index]!='字符串“

var data={1:undefined,2:null,3:10,4:“”
for(数据中的var索引){
如果(!data[index]&&typeof data[index]!='string'){
数据[索引]=0;
}
}

console.log(数据)
您可以添加
数据类型[索引]!='字符串“

var data={1:undefined,2:null,3:10,4:“”
for(数据中的var索引){
如果(!data[index]&&typeof data[index]!='string'){
数据[索引]=0;
}
}
console.log(数据)
尝试:

if((typeof==“未定义”)||
(        == ""         )    ) {
= 0 ;
}
顺便问一下,您是否使用“1”、“2”索引?

试试:

if((typeof==“未定义”)||
(        == ""         )    ) {
= 0 ;
}

顺便问一下,您是否使用了“1”、“2”索引?

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

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

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

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

.undefined不是问题,而是空字符串..undefined不是问题,而是空字符串。感谢@Michaël提供有用的链接。感谢@Michaël提供有用的链接。