// This is what people normally do in ES5 to set default paramsfunctionlink(height, color, callbackFn) {var height = height ||50;var color = color ||'red';var callbackFn = callbackFn ||function() {};// function content...}
It works well, but in the above implementation we didn't account for falsy values. For example: 0, '', null, NaN, false are falsy values.
Approach 2: Better way.
// So there is a better way to do this, it checks param is actually undefined or not:functionlink(height, color, callbackFn) {var height =typeof height !=='undefined'? height :50;var color =typeof color !=='undefined'? color :'red';var callbackFn =typeof callbackFn !=='undefined'? callbackFn :function() {};// function content...}
ES6 way to write default params
Approach 3: ES6 way, it gets just so much better.
functionlink(height =50, color ='red',callbackFn= () => {}) {// function content...}// or using ES6 const and letconstnoop= () => {};constlink= (height =50, color ='red', callbackFn = noop) => {// function content...};