他の言語では、私は演算子の2つがor
と||
であり、これは異なる型キャストです。 Javascriptにはブール値ではなく元のオブジェクトを比較して返す一連の演算子がありますか?Javascript - 型キャストなしでブール値と比較
は私がブール演算子(||
、&&
)と、彼らはすでにそれを行うの唯一のセットがありますvar foo = bar.name or bar.title
他の言語では、私は演算子の2つがor
と||
であり、これは異なる型キャストです。 Javascriptにはブール値ではなく元のオブジェクトを比較して返す一連の演算子がありますか?Javascript - 型キャストなしでブール値と比較
は私がブール演算子(||
、&&
)と、彼らはすでにそれを行うの唯一のセットがありますvar foo = bar.name or bar.title
のように1つのステートメントで、定義されている方の値を返すことができるようにしたいです。あなたの心which values evaluate to falseに維持する必要があります。もちろん、
var bar = {
name: "",
title: "foo"
};
var foo = bar.name || bar.title;
alert(foo); // alerts 'title'
。あなたが言及したように
var foo = (bar.name != undefined) ? bar.name :
((bar.title != undefined) ? bar.title : 'error');
私はどちらか完全に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'
var foo = bar.name || bar.title;
なお、第1の定義されたオブジェクトを返します。
両方が定義されていない場合、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