代码之家  ›  专栏  ›  技术社区  ›  Peter Kellner

正在检查JavaScript对象的空子项

  •  0
  • Peter Kellner  · 技术社区  · 12 年前

    我相信我已经发现了需要检查javascript对象的未定义和null的情况,如下所示:

    if (x !== undefined && x != null && x.length > 0) {...}
    

    然而,在JetBrains工具的最近升级中,它告诉我这已经足够了

    if (x != undefined && x.length > 0) {...}
    

    我的问题是,我只是想确保字符串“x”的长度为非零,并且不是未定义的或null(使用最少的测试)。

    思想?

    7 回复  |  直到 12 年前
        1
  •  5
  •   gdoron    12 年前

    在javascript中

    undefined == null // true
    undefined === null // false
    

    所以检查 == 对于 undefined 使 == 检查 null 冗余的

        2
  •  2
  •   Community Mohan Dere    9 年前

    检查是否 foo === undefined 将触发错误 未定义foo 看见 variable === undefined vs. typeof variable === "undefined"

    这个 existential operator 在CoffeeScript中编译为

    typeof face !== "undefined" && face !== null
    

    编辑:

    Matt's comment 如果您只想检查字符串,效果会更好:

    typeof x === 'string' && x.length > 0
    
        3
  •  2
  •   Dennis    12 年前

    尝试

    if (x && x.length)
    

    undefined , null 0 都是虚假的价值观。

    编辑: 你似乎知道 x 应该是 string ,您也可以使用 if (x) 因为空字符串也是伪造的。

        4
  •  2
  •   Community Mohan Dere    6 年前

    您可以使用 _.isNull 从…起 Underscore JavaScript库提供了一大堆有用的函数式编程助手。

    _.isNull(对象)

    如果对象的值为null,则返回true。

    _.isNull(null);
    => true
    _.isNull(undefined);
    => false
    
        5
  •  2
  •   James-Jesse Drinkard    9 年前

    这是我使用的,也是最简洁的。它涵盖: 未定义、null、NaN、0、“”(空字符串)或false。因此,我们可以说“对象”是真实的。

    if(object){
        doSomething();
    }
    
        6
  •  0
  •   iJade    12 年前

    试试这个

     if (!x) {
      // is emtpy
    }
    
        7
  •  0
  •   jukempff    12 年前

    对照检查 null 以及 undefined AND“空字符串”您可以直接写入

    if(!x) {
       // will be false for undefined, null and length=0
    }
    

    但是你需要确保你的变量已经定义好了!否则,这将导致错误。

    如果您正在检查 object (例如 window 对象),您可以随时使用它。例如,用于检查 localStorage 支持:

    var supports = {
        localStorage: !!window.localStorage
    }