say you have an if statement:
try {
if (!a || !b || !c || !d) {
let nullVariable = ???;
// use the variable that is null
throw nullVariable
}
} catch (ex) {
log.debug(`${ex} is not defined`);
}
Is there a built in way to see which variable was set to null, without creating an if statement for each individual variable?
You can put the assignment inside the if condition expression.
let a, b, c, d;
a = 3;
b = "foo";
d = {x: 10};
let nullVariable = (!a && 'a') || (!b && 'b') || (!c && 'c') || (!d && 'd');
if (nullVariable) {
console.log(`${nullVariable} is not defined`);
}
You can extract the variable name using object shorthand.
const fn = ({ a, b, c, d }) => {
let nullVariable = Object.entries({ a, b, c, d }).find(([_, val]) => !val)?.[0];
if(nullVariable)
console.log(nullVariable + ' is falsy');
};
fn({ a: 1, c: 2, d: 3 });
fn({ a: 1, b: 2, c: 3 });
fn({ a: 1, b: 2, c: 3, d: 4 });