带有 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)
假设我有以下 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)