带有 javascript 对象的三元表达式

Ternary expression with a javascript object

假设我有以下 javascript 对象:

var __error__ = {0: 'ok'}

如果键不在 obj 中,我想 return 一个空字符串,否则显示错误消息。例如:

var value = __error__[col_num] ? "The value cannot be converted" : ""

如何用三元表达式正确地完成这件事?我需要做 __error__[col_num] == undefined 吗?或者上面的表达式本身计算为 false

如果您只想检查对象中是否存在键而不是值的真实性 false 您应该使用 in operator

var value = col_num in __error__ ? "The value cannot be converted" : ""

您也可以使用 Object.hasOwnProperty,只有当对象具有 属性 时 return 才为真(如果 属性 是继承的,则 return 为假).

这里有几个例子来说明差异

var parent = {
  foo: undefined
};

var child = Object.create(parent);

console.log("foo" in parent); // parent has the "foo" property
console.log("foo" in child); // child has the "foo" property

console.log(parent.hasOwnProperty("foo")); // parent has the "foo" property
console.log(child.hasOwnProperty("foo")); // child has the "foo" property but it belonds to parent

console.log(child.foo !== undefined); // the foo property of child is undefined
console.log(!!child.foo); // the troothy of undefined is false

console.log(parent.foo !== undefined); // the foo property of parent is undefined
console.log(!!parent.foo); // the troothy of undefined is false

你也可以使用hasOwnProperty which returns 一个boolean表示对象是否有指定的属性

var __error__ = {
  0: 'ok'
}

var value = __error__.hasOwnProperty(1) ? "The value cannot be converted" : "Empty";
console.log(value)