如何检查JavaScript中的对象属性是否未定义?


当前回答

在JavaScript中,有truthy和falsy表达式。如果要检查属性是否未定义,可以直接使用给定的If条件,

使用真/假概念。

if(!ob.someProp){
    console.log('someProp is falsy')
}

然而,还有几种方法可以检查对象是否具有属性,但对我来说似乎很长。

使用==未定义的签入if条件

if(ob.someProp === undefined){
    console.log('someProp is undefined')
}

使用的类型

typeof充当未定义值和变量是否存在的组合检查。

if(typeof ob.someProp === 'undefined'){
    console.log('someProp is undefined')
}

使用hasOwnProperty方法

JavaScript对象已在对象原型中的hasOwnProperty函数中构建。

if(!ob.hasOwnProperty('someProp')){
    console.log('someProp is undefined')
}

不深入,但第一种方法看起来很短,对我来说很好。下面是JavaScript中truthy/falsy值的详细信息,未定义的是其中列出的falsy。所以if条件的行为正常,没有任何故障。除了未定义的值之外,值NaN、false(显然)、“”(空字符串)和数字0也是假值。

警告:请确保属性值不包含任何错误值,否则if条件将返回false。对于这种情况,可以使用hasOwnProperty方法

其他回答

检查是否存在密钥的一种简单方法是:

if (key in obj) {
  // Do something
} else {
  // Create key
}

const obj = {
  0: 'abc',
  1: 'def'
}

const hasZero = 0 in obj

console.log(hasZero) // true

在《探索JavaScript中的空和未定义的深渊》一文中,我看到Undercore.js等框架使用了这个函数:

function isUndefined(obj){
    return obj === void 0;
}

来自lodash.js。

var undefined;
function isUndefined(value) {
  return value === undefined;
}

它创建了一个名为undefined的局部变量,该变量用默认值(即真正的undefineed)初始化,然后将该值与变量undefine进行比较。


更新日期:2019年9月9日

我发现Lodash更新了它的实现。查看我的问题和代码。

要做到防弹,只需使用:

function isUndefined(value) {
  return value === void 0;
}

同样的事情也可以写得更短:

if (!variable){
    // Do it if the variable is undefined
}

or

if (variable){
    // Do it if the variable is defined
}

在JavaScript中,有truthy和falsy表达式。如果要检查属性是否未定义,可以直接使用给定的If条件,

使用真/假概念。

if(!ob.someProp){
    console.log('someProp is falsy')
}

然而,还有几种方法可以检查对象是否具有属性,但对我来说似乎很长。

使用==未定义的签入if条件

if(ob.someProp === undefined){
    console.log('someProp is undefined')
}

使用的类型

typeof充当未定义值和变量是否存在的组合检查。

if(typeof ob.someProp === 'undefined'){
    console.log('someProp is undefined')
}

使用hasOwnProperty方法

JavaScript对象已在对象原型中的hasOwnProperty函数中构建。

if(!ob.hasOwnProperty('someProp')){
    console.log('someProp is undefined')
}

不深入,但第一种方法看起来很短,对我来说很好。下面是JavaScript中truthy/falsy值的详细信息,未定义的是其中列出的falsy。所以if条件的行为正常,没有任何故障。除了未定义的值之外,值NaN、false(显然)、“”(空字符串)和数字0也是假值。

警告:请确保属性值不包含任何错误值,否则if条件将返回false。对于这种情况,可以使用hasOwnProperty方法