javascript – 如何在三元运算符中检查未定义的变量?

我有三元操作的问题:

let a = undefined ? "Defined!" : "Definitely Undefined",
    b = abc ? "Defined!" : "Definitely Undefined", // ReferenceError
    c = (abc !== undefined) ? "Defined!" : "Definitely Undefined", // ReferenceError
    d = (typeof abc !== "undefined") ? "Defined!" : "Definitely Undefined"

// results: a = d = "Definitely Undefined", 
// while b and c throw ReferenceError when abc is undefined

在访问其属性之前检查abc是否未定义以及在未定义时分配空白对象{}的最佳和简短方法是什么?

let a = [[best way to check abc]] ? {[abc.label1]: 2, [abc.label2]: 1} : {}

PS:我目前正在使用(typeof abc!==“undefined”)代替[[检查abc的最佳方式]]

解决方法:

while b and c throw ReferenceError when abc is undefined

所以abc不仅仅是未定义的,它是未声明的.那里有很大的不同.

如果你需要处理未声明的abc,那么唯一安全的方法(没有try / catch)是使用typeof:

typeof abc === "undefined"

如果abc是未声明的标识符,那将是真的,没有错误.如果声明了abc并且包含未定义的值,那么也是如此.

What is the best and short way to check if abc is undefined before accessing its properties as well as assign blank object {} if undefined?

可能使用var来确保声明它:

var abc = abc || {};

重复的var声明不是错误(重复的let声明).因此,如果使用上述内容,如果abc未声明,则会声明初始值为undefined,并将其赋值为{}.如果它已声明,如果它是假的,我们用{}替换它的值.但是,如果它可能或不可能用let或const声明,那么上面也会抛出错误.

因此,要处理可能或不使用let或const声明的情况,我们需要完全不同的变量:

let ourabc = typeof abc === "undefined" || !abc ? {} : abc;

如果abc未声明或者包含假值,则将ourabc设置为{}.由于所有非null对象引用都是真实的,并且您已经说过要访问对象属性,这可能是最短路径.

相关文章

我最大的一个关于TypeScript的问题是,它将原型的所有方法(无...
我对React很新,我正在尝试理解子组件之间相互通信的简洁方法...
我有一个非常简单的表单,我将用户电子邮件存储在组件的状态,...
我发现接口非常有用,但由于内存问题我需要开始优化我的应用程...
我得到了一个json响应并将其存储在mongodb中,但是我不需要的...
我试图使用loadsh从以下数组中获取唯一类别,[{"listing...