TypeError:string为null

时间:2013-08-17 08:29:11

标签: jquery

我收到的类型错误字符串为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上运行此功能?

2 个答案:

答案 0 :(得分:1)

要检查空字符串,您应该尝试这样做:

if(s)
{}

就空字符串而言,检查你的方式的长度应该没问题,可能比=====更快。

答案 1 :(得分:1)

首先nullundefined是两个不同的值,所以为了使短路工作,你需要测试undefined和null你不需要typeof函数你可以简单地做

if(s != undefined && s != null && s.length)

更改了代码中的逻辑,因为您正在使用||进行测试,但在您的情况下总是会失败(只有在未定义s的类型时才会使用它)

但是因为null和undefined都是假值。它被用作布尔表达式,它们都可以评估为false,只需执行

即可
if(s && s.length){
}

JS中有相当多的假值

  • 未定义
  • “”//空字符串
  • 0

最后一个是唯一真假值,所以如果你value === false只有这五个中的最后一个将评估为真,其中所有这些将在条件中评估为假

任何具有长度的字符串也是一个真值,有一个令人惊讶的值,其值为"false",因为所有字符串的长度都是> 0将评估为true如果没有length属性,则上述if失败的唯一方法。那就是它不是一个字符串(或一个数组或任何其他具有length属性的类型)。

所以你可以完全删除长度测试

if(s){
}

或明确表示您正在测试字符串

if(s && typeof s === "string"){
}