My Javascript function leads my console to return me :
TypeError: style is null
Here the snippet:
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"))
I can't understand why. It seems to me everything is great,
Any hint would be great, thanks.
Default parameters is assigned only if no value or undefined is passed
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"))
What if i want to use default value on all sorts of
falsy values such as false, '', null?
You can't use default parameter for that but you can use ||
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"))
Two things you need to update
please see the updated code
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"))
you can write the above snippet in much more cleaner way using es6
see the below snippet
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"))
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With