2011-08-12 17 views
4

在其他语言中,我有两组运算符or||,它们的类型转换有所不同。 Javascript是否有一组运算符来比较并返回原始对象,而不是布尔值?Javascript - 没有类型转换比较布尔值

我希望能够返回取其值定义,用一个语句像var foo = bar.name or bar.title

回答

6

只有一组布尔运算符(||&&),他们已经做到这一点的。

var bar = { 
    name: "", 
    title: "foo" 
}; 

var foo = bar.name || bar.title; 

alert(foo); // alerts 'title' 

当然,你必须记住which values evaluate to false

+0

就是这样。当我不这么认为的时候,我有一些评估是错误的。哎呦。 – harbichidian

2
var foo = (bar.name != undefined) ? bar.name : 
      ((bar.title != undefined) ? bar.title : 'error'); 
1

我要么完全missunderstood的问题,或者它只是简单明了就像你提到的:

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' 
2

var foo = bar.name || bar.title;

它返回第一定义的对象。

如果两者均未定义,则返回undefined

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] 

如果whant要强制转换为布尔值,你可以使用双负运算符:

console.log(!![1, 2]); //will output true 
console.log(!!0); //will output false