如何缩短可读性比较/逻辑行以指定默认值?在jQuery/JavaScript中?

如何缩短可读性比较/逻辑行以指定默认值?在jQuery/JavaScript中?,javascript,jquery,comparison,logical-operators,Javascript,Jquery,Comparison,Logical Operators,考虑下面的代码,在一个常规函数中,它检查是否提供了某个参数,并为名为message的变量指定一个默认值。如果参数是truthy或空字符串,则只需将其转换为字符串并存储在消息变量中,否则参数类型将存储在消息变量中。 我知道可以缩短if-else语句来为变量指定默认值,例如: var message = arguments[0] || jQuery.type(arguments[0]); 如果只有参数[0]是真实的,则该参数将存储在消息中。但是,如何在不使用长if-else语句的情况下,为一个虚假

考虑下面的代码,在一个常规函数中,它检查是否提供了某个参数,并为名为message的变量指定一个默认值。如果参数是truthy或空字符串,则只需将其转换为字符串并存储在消息变量中,否则参数类型将存储在消息变量中。 我知道可以缩短if-else语句来为变量指定默认值,例如:

var message = arguments[0] || jQuery.type(arguments[0]);
如果只有参数[0]是真实的,则该参数将存储在消息中。但是,如何在不使用长if-else语句的情况下,为一个虚假值的空字符串创建异常呢

if(arguments[0] || arguments[0] === '')
    var message = arguments[0].toString();
else
    var message = jQuery.type(arguments[0]);

听起来你在找一个速记if/else。如果是这样,你可以找到你问题的答案。基本上你需要的是一个三元运算符

摘录如下:

var x=y!==未定义?y:1


您的第一个语句应该使用
&&
,而不是
| |
。奇怪的是,您的“long”if-else语句比三元运算符更易于阅读/维护,您需要在一行中执行它,并且不会有任何性能优势。或者在赋值方面:
var message=arguments[0]| arguments[0]=''?参数[0]:jQuery.type(参数[0])
var message = ((arguments[0] || arguments[0] === '') ? arguments[0].toString() : jQuery.type(arguments[0]));