为了账号安全,请及时绑定邮箱和手机立即绑定

javaScript 函数 - 为什么我的默认参数失败?

javaScript 函数 - 为什么我的默认参数失败?

千万里不及你 2021-06-15 09:06:02
我的 Javascript 函数引导我的控制台返回我:类型错误:样式为空这里的片段:let style = {  one: 1,  two: 2,  three: 3}function styling(style = style, ...ruleSetStock) {  return ruleSetStock.map(ruleSet => {    console.log(ruleSet)    return style[ruleSet]  })}console.log(styling(null, "one", "two", "three"))我不明白为什么。在我看来一切都很棒任何提示都会很棒,谢谢。
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

仅当no value或undefined被传递时才分配默认参数


let defaultStyle = {  one: 1, two: 2, three: 3 }


function styling(style = defaultStyle, ...ruleSetStock) {

  return ruleSetStock.map(ruleSet => {

    return style[ruleSet]

  })

}


console.log(styling(undefined, "one", "two", "three"))

如果我想在各种类型上使用默认值falsy values such as false, '', null 怎么办?


您不能为此使用默认参数,但可以使用 ||


let style1 = {  one: 1, two: 2, three: 3 }


function styling(style, ...ruleSetStock) {

  style = style || style1

  return ruleSetStock.map(ruleSet => {

    return style[ruleSet]

  })

}


console.log(styling(undefined, "one", "two", "three"))

console.log(styling(null, "one", "two", "three"))

console.log(styling('', "one", "two", "three"))

console.log(styling(0, "one", "two", "three"))


查看完整回答
反对 回复 2021-06-18
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

你需要更新的两件事

  1. 传递默认参数没有值或未定义

  2. 将样式默认变量更改为另一个名称

请查看更新后的代码

let defaultStyle = {

  one: 1,

  two: 2,

  three: 3

}


function styling(style = defaultStyle, ...ruleSetStock) {


  return ruleSetStock.map(ruleSet => {

    console.log(ruleSet)

    return style[ruleSet]

  })

}


console.log(styling(undefined, "one", "two", "three"))


您可以使用 es6 以更简洁的方式编写上述代码段


见下面的片段


const defaultStyle = {

  one: 1,

  two: 2,

  three: 3

}



const styling = (style = defaultStyle, ...ruleSetStock) => ruleSetStock.map(ruleSet => {

   return style[ruleSet]

})


console.log(styling(undefined, "one", "two", "three"))


查看完整回答
反对 回复 2021-06-18
?
繁花如伊

TA贡献2012条经验 获得超12个赞

将style变量重命名为styles,然后null在调用时将其作为第一个参数,而不要styling使用undefined:


const styles = {

  one: 1,

  two: 2,

  three: 3

}


function styling(style = styles, ...ruleSetStock) {


  return ruleSetStock.map(ruleSet => {

    console.log(ruleSet)

    return style[ruleSet]

  })

}


console.log(styling(undefined, "one", "two", "three"))

// one

// two

// three

// [1, 2, 3]


查看完整回答
反对 回复 2021-06-18
  • 3 回答
  • 0 关注
  • 176 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信