在其他语言中,我有两组运算符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