Javascript是否有条件赋值,如Ruby' s || =(Double pipe)

时间:2016-02-01 10:50:54

标签: javascript conditional

在Ruby中,你有一种称为条件赋值(public static IEnumerable<T> Prepend<T>(this IEnumerable<T> first, [MinLength(1)] params T[] second) { return second.Concat(first); } )的东西。如果尚未定义或设置变量值,则可以使用它为变量赋值。它类似于在Javascript中说这个:

||=

在Ruby中,要将if (typeof x == undefined) { x = 'value' } 分配给'value(如果尚未分配),您可以使用x

它的工作原理示例:

x ||= 'value

或者:

x = 1
x ||= 2
return x    # Will return 1

有没有办法在没有明显更长的x ||= 2 return x # Will return 2 声明的情况下在Javascript中执行此操作?

已解决: @ tede24建议如下

if

与Ruby不同的唯一方法是,如果var x = x || newValue 已定义为x,即0,则会将var x = 0设置为x

2 个答案:

答案 0 :(得分:3)

x = typeof x !== 'undefined' ? x : newValue;

更新:tede24有更好的答案,我只是想学习 - 如何摆脱参考错误,如果使用没有var或已经没有声明

答案 1 :(得分:2)

var x = x || newValue;

这意味着每当x被评估为false(undefined,null,0)时,它将分配第二个值。