在其他語言中,我有兩組運算符or
和||
,它們的類型轉換有所不同。 Javascript是否有一組運算符來比較並返回原始對象,而不是布爾值?Javascript - 沒有類型轉換比較布爾值
我希望能夠返回取其值定義,用一個語句像var foo = bar.name or bar.title
在其他語言中,我有兩組運算符or
和||
,它們的類型轉換有所不同。 Javascript是否有一組運算符來比較並返回原始對象,而不是布爾值?Javascript - 沒有類型轉換比較布爾值
我希望能夠返回取其值定義,用一個語句像var foo = bar.name or bar.title
只有一組布爾運算符(||
,&&
),他們已經做到這一點的。
var bar = {
name: "",
title: "foo"
};
var foo = bar.name || bar.title;
alert(foo); // alerts 'title'
當然,你必須記住which values evaluate to false。
var foo = (bar.name != undefined) ? bar.name :
((bar.title != undefined) ? bar.title : 'error');
我要麼完全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'
var foo = bar.name || bar.title;
它返回第一定義的對象。
如果兩者均未定義,則返回undefined
。
的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
就是這樣。當我不這麼認爲的時候,我有一些評估是錯誤的。哎呦。 – harbichidian