2011-08-12 17 views
4

他の言語では、私は演算子の2つがor||であり、これは異なる型キャストです。 Javascriptにはブール値ではなく元のオブジェクトを比較して返す一連の演算子がありますか?Javascript - 型キャストなしでブール値と比較

は私がブール演算子(||&&)と、彼らはすでにそれを行うの唯一のセットがありますvar foo = bar.name or bar.title

答えて

6

のように1つのステートメントで、定義されている方の値を返すことができるようにしたいです。あなたの心which values evaluate to falseに維持する必要があります。もちろん、

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

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

alert(foo); // alerts 'title' 

。あなたが言及したように

+0

それです。私はそれができないと思ったときに偽に評価するものを持っていました。うわー。 – harbichidian

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

私はどちらか完全にmissunderstood質問や、それは単にstraighforwardだ:

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

場合bar.nameは、そうでないbar.titleが割り当てられている、それはfooに割り当てられている任意のtruthy値が含まれています。例えば

var bar = { 
    name: null, 
    title: 'Foobar' 
}; 

var foo = bar.name || bar.title 
console.log(foo); // 'Foobar' 
2

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

なお、第1の定義されたオブジェクトを返します。

両方が定義されていない場合、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 
関連する問題