注意到两个模式为函数的参数设置默认值:
function fn ( val ) {
val = val || 'default'; // (1)
val || ( val = 'default' ); // (2)
}
通常我使用#1,只找到第二个。
哪个更好?那些有什么区别?还有其他选择吗?
答案 0 :(得分:2)
您的方法不会一直有效。如果要将false
作为参数传递,例如,表达式将被视为false,并且您的变量将被赋予默认值。
对于更强大的方法,您可以使用:
val = typeof val !== 'undefined' ? val : "default";
使用此方法,您可以将false
作为参数传递,甚至null
(typeof null == "object"
)
如果你有很多可选参数,你也可以考虑将一个对象作为参数,并在未设置的属性上使用默认值来完成它。这更容易,因为您可以将值映射到属性名称,并且顺序不再重要。