javascript对象赋值表达式 - 比较

时间:2013-12-19 09:28:38

标签: javascript expression

假设我们有一个函数的可选参数,它可以作为undefined

之间有什么区别吗?
options || (options = {});

options = options || {};

?如果没有,哪一个你找到更好(我的意思是更快或更可读)?问题是 - 您将使用哪一个在javascript中实现可选参数

2 个答案:

答案 0 :(得分:0)

确切的2行是不同的:

在第一个表达式中,表达式对选项没有任何作用(如果没有定义),而另一个是声明。

答案 1 :(得分:0)

从逻辑上讲,它们都是一样的。

options || (options = {});

如果options是Truthy值,那么它将短路并且不会转到下一部分。如果它是一个Falsy值,它将转到下一个部分,其中创建了空对象并将其分配给options

options = options || {};

同样的事情,第一个右侧被评估。如果options是Truthy,则会按原样分配给options,如果它是Falsy,则会创建一个空对象并将其分配给options

注意:如果options是函数的可选参数,并且它可以接受其他Falsy值,即使用户有意地传递Falsy值,例如{{1} },0,false,它仍将使用空对象