Hello Devs,
Are you facing any problem when you pass null or undefined in a function as a parameter? May be you have faced this problem or maybe you haven't.On the other hand, maybe you know the solutions in many ways.
In this post I want talk about how to pass default value in case of null and undefined. Hopefully, it will help somebody.
Oh Enough Introduction...
Let's get to the main point. Take a function called sayHi()
which takes a parameter and print that parameter. that's it.
const sayHi = (greeting) => {
console.log(greeting)
}
sayHi('Hi')
//your@console:~$ Hi
Now, if I don't give any parameter what will be happen? Let's check...
const sayHi = (greeting) => {
console.log(greeting)
}
sayHi()
//your@console:~$ undefined
So in this case if we set a default parameter in the function,our problem will be solved.
const sayHi = (greeting='Hi') => {
console.log(greeting)
}
sayHi()
//your@console:~$ Hi
So undefined related problem solved...!
Now ,let's check again if I put a null parameter what will happen?
const sayHi = (greeting='Hi') => {
console.log(greeting)
}
sayHi(null)
//your@console:~$ null
Ok, that's the problem we don't need a null value as our output. Default value will be used when the parameter is undefined. However, if we put null here, our default parameter can't prevent it. Because undefined!==null
So how should we handle this?
Now we need nullish coalescing operator ??
console.log(12 ?? "not found") // 12
console.log(0 ?? "not found") // 0
console.log("Sajid" ?? "not found") // "Sajid"
console.log("" ?? "not found") // ""
console.log(true ?? "not found") // true
console.log(false ?? "not found") // false
console.log(undefined ?? "not found") // "not found"
console.log(null ?? "not found") // "not found"
If the left value is null or undefined , then the right value will be assigned. That's how nullish coalescing operator works.
So out solution will be
const sayHi = (greeting) => {
const hi = greeting ?? 'Hi'
console.log(hi)
}
sayHi(null)
//your@console:~$ Hi
You can also use ||
or
operator which can be problematic if your left value contains ""
or 0
or false
Something like that,
console.log("" || "not found") // "not found"
console.log(0 || "not found") // "not found"
So coalescing operator is our best solution if we want to ignore only undefined and null as parameter.
So Dev, what do you think about this operator?
Top comments (0)