Javascript 什么';CoffeeScript中可选参数字段的默认值是一种简洁的方式吗?

Javascript 什么';CoffeeScript中可选参数字段的默认值是一种简洁的方式吗?,javascript,coffeescript,Javascript,Coffeescript,我有一个带有这个签名的函数: createUiLabel = (text, fontProperties) -> 我希望fontProperties是可选的,如果未定义,则默认如下: { size: defaultSize family: defaultFamily color: defaultColor } createUiLabel = (text, fontProperties = { size: defaultSize family: defaultFami

我有一个带有这个签名的函数:

createUiLabel = (text, fontProperties) ->
我希望fontProperties是可选的,如果未定义,则默认如下:

{
  size: defaultSize
  family: defaultFamily
  color: defaultColor
}
createUiLabel = (text, fontProperties = {
  size: defaultSize
  family: defaultFamily
  color: defaultColor
}) ->
createUiLabel("foo", {size: 14})
我知道我可以通过这样的分解实现这一点:

{
  size: defaultSize
  family: defaultFamily
  color: defaultColor
}
createUiLabel = (text, fontProperties = {
  size: defaultSize
  family: defaultFamily
  color: defaultColor
}) ->
createUiLabel("foo", {size: 14})
但是,能够像这样调用此函数将非常方便:

{
  size: defaultSize
  family: defaultFamily
  color: defaultColor
}
createUiLabel = (text, fontProperties = {
  size: defaultSize
  family: defaultFamily
  color: defaultColor
}) ->
createUiLabel("foo", {size: 14})
并使
颜色
系列
仍使用默认值。但是,传入此对象似乎覆盖了其他属性,因此
color
family
变得未定义。当您只想更改一个属性时,从外部来看,必须定义这些其他属性是非常烦人的。如何轻松实现该函数,以便前面的调用为
颜色
系列
提供默认值


这看起来很相似,不同之处在于中间有一个可选对象,我试图从中提取可选字段

我会使用一个空的默认值上的存在式进行显式复合赋值:

createUiLabel = (text, fontProperties = {}) ->
    fontProperties.size ?= defaultSize
    fontProperties.color ?= defaultColor
    fontProperties.family ?= defaultFamily
    …

看看,这正是你在这里要求的。@KyleNeedham很好。最后我会用这个。不知道下一步该怎么处理这个问题。我应该删除它吗?我还应该等别人回答我的咖啡剧本吗?或者,即使不是用咖啡脚本的形式,我也应该用下划线来回答你的问题吗?你可以用你是如何解决的来回答你自己的问题,或者等着看是否有更好的解决方案。可能是Nice的重复,谢谢。最后,我想我会使用下划线/lodash的
\u0.default
,但我很高兴知道这一点。