在其他语言中,我有两组运算符,or
和||
,它们的类型不同。 Javascript是否有一组运算符来比较和返回原始对象,而不是布尔值?
我希望能够使用var foo = bar.name or bar.title
答案 0 :(得分:6)
只有一组布尔运算符(||
,&&
),他们已经这样做了。
var bar = {
name: "",
title: "foo"
};
var foo = bar.name || bar.title;
alert(foo); // alerts 'title'
当然,你必须牢记which values evaluate to false。
答案 1 :(得分:2)
var foo = (bar.name != undefined) ? bar.name :
((bar.title != undefined) ? bar.title : 'error');
答案 2 :(得分:2)
var foo = bar.name || bar.title;
它返回第一个定义的对象。
如果两者都不定义,则返回undefined
。
答案 3 :(得分:1)
我要么完全不理解这个问题,要么就像你提到的那样直截了当:
var foo = bar.name || bar.title;
如果bar.name
包含任何 truthy 值,则会将其分配到foo
,否则会分配bar.title
。
例如:
var bar = {
name: null,
title: 'Foobar'
};
var foo = bar.name || bar.title
console.log( foo ); // 'Foobar'
答案 4 :(得分:1)
Javascript的行为完全符合您的要求:
var a = [1, 2],
b = [3, 4];
console.log(a || b); //will output [1, 2]
a = 0;
console.log(a || b); //will outout [3, 4]
如果要将类型转换为布尔值,可以使用双向运算符:
console.log(!![1, 2]); //will output true
console.log(!!0); //will output false