Javascript 函数中的默认值
注意到为函数的参数设置默认值的两种模式:Javascript 函数中的默认值,javascript,design-patterns,functional-programming,Javascript,Design Patterns,Functional Programming,注意到为函数的参数设置默认值的两种模式: function fn ( val ) { val = val || 'default'; // (1) val || ( val = 'default' ); // (2) } 一般我用#1,刚找到第二个 哪个更好?它们之间有什么区别?还有其他选择吗?您的方法不会一直有效。例如,如果要将false作为参数传递,则表达式将被视为false,并且将为变量指定默认值 对于更稳健的方法,您可以使用: val = typeof val !==
function fn ( val ) {
val = val || 'default'; // (1)
val || ( val = 'default' ); // (2)
}
一般我用#1,刚找到第二个
哪个更好?它们之间有什么区别?还有其他选择吗?您的方法不会一直有效。例如,如果要将
false
作为参数传递,则表达式将被视为false,并且将为变量指定默认值
对于更稳健的方法,您可以使用:
val = typeof val !== 'undefined' ? val : "default";
使用此方法,您可以将false
作为参数传递,甚至null
(typeof null==“object”
)
如果你有很多可选的参数,你也可以考虑把一个对象作为参数,并用缺省值在没有设置的属性上完成它。这更容易,因为您可以将值映射到属性名称,并且顺序不再重要。
我将使用第一个,第二个看起来至少让我困惑。如果“val”未定义,则第一个将“val”重新指定为“val”或“default”的值。第二个是“隐藏的如果”。val本身产生val的值。如果未定义,则执行or子句(将“default”赋值给val),如果未定义,or子句不会被执行,val的值也不再被使用。请注意,如果可以合法地使用与默认值不同的falsy参数值调用函数(例如,如果默认值为1,但可以使用0调用它),则这两种方法都不适用。您询问了其他选项:对于较新的JS程序员来说,如果(!val)val='default',则代码>或如果(val==未定义)val='默认'代码>