2011-08-12 42 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