我收到的类型错误字符串为null,
我正在检查这样的字符串:
if (typeof s != 'undefined' || s.length){
var j = JSON.stringify(
s.split(',').reduce(function(m,v) {
var t = v.split(':');
m[t[0]] = t[1];
return m;
}, {})
);
}
但它仍显示类型错误,
告诉我如何在null
上运行此功能?
答案 0 :(得分:1)
要检查空字符串,您应该尝试这样做:
if(s)
{}
就空字符串而言,检查你的方式的长度应该没问题,可能比===
或==
更快。
答案 1 :(得分:1)
首先null
和undefined
是两个不同的值,所以为了使短路工作,你需要测试undefined和null你不需要typeof函数你可以简单地做
if(s != undefined && s != null && s.length)
更改了代码中的逻辑,因为您正在使用||
进行测试,但在您的情况下总是会失败(只有在未定义s的类型时才会使用它)
但是因为null和undefined都是假值。它被用作布尔表达式,它们都可以评估为false,只需执行
即可if(s && s.length){
}
JS中有相当多的假值
最后一个是唯一真假值,所以如果你value === false
只有这五个中的最后一个将评估为真,其中所有这些将在条件中评估为假
任何具有长度的字符串也是一个真值,有一个令人惊讶的值,其值为"false"
,因为所有字符串的长度都是> 0将评估为true如果没有length属性,则上述if失败的唯一方法。那就是它不是一个字符串(或一个数组或任何其他具有length属性的类型)。
所以你可以完全删除长度测试
if(s){
}
或明确表示您正在测试字符串
if(s && typeof s === "string"){
}