3.7 āύāĻžāϞāĻŋāĻļ āĻā§ā§ā§āϞāϏāĻŋāĻ āĻ āĻĒāĻžāϰā§āĻāϰ
āύāĻžāϞāĻŋāĻļ āĻā§āϞā§āϏāĻŋāĻ (??) āĻ āĻĒāĻžāϰā§āĻāϰ āĻšāϞ āĻāĻāĻāĻŋ āϞāĻāĻŋāĻā§āϝāĻžāϞ āĻ āĻĒāĻžāϰā§āĻāϰ āϝā§āĻāĻŋ āϤāĻžāϰ āĻĄāĻžāύāĻĻāĻŋāĻā§āϰ āĻ āĻĒāĻžāϰā§āύā§āĻĄāĻāĻŋ āϰāĻŋāĻāĻžāϰā§āύ āĻāϰ⧠āϝāĻāύ āϤāĻžāϰ āĻŦāĻžāĻŽ āĻĻāĻŋāĻā§āϰ āĻ āĻĒāĻžāϰā§āύā§āĻĄāĻāĻŋ undefined āĻŦāĻž null āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻ āύā§āϝāĻĨāĻžāϝāĻŧ āϤāĻžāϰ āĻŦāĻžāĻŽ āĻĻāĻŋāĻā§āϰ āĻ āĻĒāĻžāϰā§āύā§āĻĄāĻāĻŋ āϰāĻŋāĻāĻžāϰā§āύ āĻāϰā§āĨ¤
āύāĻžāϞāĻŋāĻļ āĻā§āϞā§āϏāĻŋāĻ (??) āĻ āĻĒāĻžāϰā§āĻāϰā§āϰ āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ āĻšāϞ
leftExpr ?? rightExpr;
āĻāĻ āĻ āĻĒāĻžāϰā§āĻāϰāĻāĻŋāϰ āĻŦā§āϝāĻžāĻŦāĻšāĻžāϰ āĻāĻāĻāĻŋ āĻā§āĻ āĻāĻĻāĻžāĻšāϰāĻŖā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĻā§āĻāĻž āϝāĻžāĻ
const name = null ?? 'Sarkar';
console.log(name);
// output "Sarkar"
const age = 0 ?? 42;
console.log(age);
// output 0
āύāĻžāϞāĻŋāĻļ āĻā§āϞā§āϏāĻŋāĻ āĻ āĻĒāĻžāϰā§āĻāϰāĻāĻŋāĻā§ āϞāĻāĻŋāĻā§āϝāĻžāϞ OR (||) āĻ āĻĒāĻžāϰā§āĻāϰā§āϰ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āώ āĻā§āϏ āĻšāĻŋāϏāĻžāĻŦā§ āĻĻā§āĻāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ (||) āĻ āĻĒāĻžāϰā§āĻāϰāĻāĻŋ āĻĄāĻžāύāĻĻāĻŋāĻā§āϰ āĻ āĻĒāĻžāϰā§āύā§āĻĄ āϰāĻŋāĻāĻžāϰā§āύ āĻāϰ⧠āϝāĻĻāĻŋ āĻŦāĻžāĻŽ āĻ āĻĒāĻžāϰā§āύā§āĻĄāĻāĻŋ āĻā§āύ⧠falsy āĻŽāĻžāύ āĻšāϝāĻŧ, āĻļā§āϧā§āĻŽāĻžāϤā§āϰ undefined āĻŦāĻž null āύāϝāĻŧāĨ¤ āĻ āύā§āϝ āĻāĻĨāĻžāϝāĻŧ, āϝāĻĻāĻŋ āϞāĻāĻŋāĻā§āϝāĻžāϞ OR (||) āĻ āĻĒāĻžāϰā§āĻāϰ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ name -āϤ⧠āĻāĻŋāĻā§ āĻĄāĻŋāĻĢāϞā§āĻ āĻŽāĻžāύ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§ āĻāĻŦāĻ āϝāĻĻāĻŋ āĻāĻŋāĻā§ falsy āĻŽāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāϝā§āĻā§āϝ āĻšāĻŋāϏāĻžāĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻž āĻšā§ āϤāĻŦā§ āĻāĻŋāĻā§ āĻ āĻĒā§āϰāϤā§āϝāĻžāĻļāĻŋāϤ āĻāĻāϰāĻŖā§āϰ āϏāĻŽā§āĻŽā§āĻā§āύ āĻšāϤ⧠āĻšāĻŦā§(āϝā§āĻŽāύ, ” āĻŦāĻž 0)āĨ¤
āύāĻžāϞāĻŋāĻļ āĻā§āϞā§āϏāĻŋāĻ āĻ āĻĒāĻžāϰā§āĻāϰā§āϰ āĻĒāĻā§āĻāĻŽ-āϏāϰā§āĻŦāύāĻŋāĻŽā§āύ āĻ āĻĒāĻžāϰā§āĻāϰ āĻ āĻā§āϰāĻžāϧāĻŋāĻāĻžāϰ āϰāϝāĻŧā§āĻā§, (||) āĻ āĻĒāĻžāϰā§āĻāĻ°Â āĻāϰ āĻā§āϝāĻŧā§ āϏāϰāĻžāϏāϰāĻŋ āĻāĻŽ āĻāĻŦāĻ āĻāύā§āĻĄāĻŋāĻļāύāĻžāϞ (āĻāĻžāϰāύāĻžāϰāĻŋ) āĻ āĻĒāĻžāϰā§āĻāϰā§āϰ āĻā§āϝāĻŧā§ āϏāϰāĻžāϏāϰāĻŋ āĻŦā§āĻļāĻŋāĨ¤
AND (&&) āĻāĻŦāĻ OR āĻ āĻĒāĻžāϰā§āĻāϰ (||) āĻāĻā§ā§āϰ āϏāĻžāĻĨā§ ?? āĻāĻāϤā§āϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāĻ°Â āĻāϰāĻž āϏāĻŽā§āĻāĻŦ āύāϝāĻŧāĨ¤ āĻāĻ āĻā§āώā§āϤā§āϰ⧠āĻāĻāĻāĻŋ āϏāĻŋāύāĻā§āϝāĻžāĻā§āϏ āĻāϰāϰ āĻĨā§āϰ⧠āĻāϰāĻŦā§āĨ¤
null || undefined ?? "foo"; // Syntax Error
true && undefined ?? "foo"; // Syntax Error
āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤā§, āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāĻĨāĻŽ āĻŦā§āϰā§āϝāĻžāĻā§āĻā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻšāĻŦā§:
(null || undefined) ?? "foo"; // "foo"
āύāĻžāϞāĻŋāĻļ āĻā§ā§ā§āϞāϏāĻŋāĻ āĻ āĻĒāĻžāϰā§āĻāϰā§āϰ āĻāĻŋāĻā§ āĻāĻĻāĻžāĻšāϰāĻŖ
(ā§§) āĻāĻāĻžāύ⧠āĻĄāĻŋāĻĢāϞā§āĻ āĻŽāĻžāύ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻž āĻšā§ā§āĻā§ āϝāĻžāϤ⧠undefined āĻŦāĻž null āĻŦāĻžāĻĻā§ āĻ āύā§āϝ āϏāĻāϞ āĻŽāĻžāύ āĻĨāĻžāĻāĻŦā§āĨ¤
const nullValue = null;
const emptyText = ""; // falsy
const someNumber = 42;
const value1 = nullValue ?? "default for 1";
const value2 = emptyText ?? 'default for 2';
const value3 = someNumber ?? 0;
console.log(value1); // "default for 1"
console.log(value2); // ""
console.log(value3); // 42
(⧍) āĻā§āϝāĻžāϰāĻŋā§ā§āĻŦāϞā§Â āĻĄāĻŋāĻĢāϞā§āĻ āĻŽāĻžāύ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĒā§āϰā§āĻŦā§ OR(||) āĻ āĻĒāĻžāϰā§āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϤ, āĻāĻŋāύā§āϤ⧠OR(||) āĻ āĻĒāĻžāϰā§āĻāϰ āϝā§āĻšā§āϤ⧠āϝā§āĻā§āύ⧠falsy āĻŽāĻžāύ āĻšāϞā§āĻ āĻĄāĻžāύ āĻ āĻĒāĻžāϰā§āύā§āĻĄāĻāĻŋ āϰāĻŋāĻāĻžāϰā§āύ āĻāϰā§, āϤāĻžāĻ āĻāĻŋāĻā§ āĻā§āώā§āϤā§āϰ⧠āϝāĻĻāĻŋ falsy āĻŽāĻžāύ (ââ āĻŦāĻž 0) āĻā§ āĻĄāĻŋāĻĢāϞā§āĻ āĻŽāĻžāύ āĻšāĻŋāϏā§āĻŦā§ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻž āϝā§āϤāύāĻž, āϝā§āĻāĻž āύāĻžāϞāĻŋāĻļ āĻā§ā§ā§āϞāϏāĻŋāĻ āĻ āĻĒāĻžāϰā§āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϏāĻŽā§āĻāĻŦāĨ¤
const deafultText = "";
const textWithOR = deafultText || "Hello world";
console.log(textWithOR); // output: Hello world
const textWithNullishCoalescing = deafultText ?? 'Hi neighborhood';
console.log(textWithNullishCoalescing); // output: ''
(ā§Š) āϞāĻāĻŋāĻā§āϝāĻžāϞ āĻ āĻĒāĻžāϰā§āĻāϰāĻĻā§āϰ āĻŽāϤā§, āĻĄāĻžāύāĻĻāĻŋāĻā§āϰ āĻāĻā§āϏāĻĒā§āϰā§āĻļāύāĻāĻŋ āĻŽā§āϞā§āϝāĻžāϝāĻŧāύ āĻāϰāĻž āĻšāϝāĻŧ āύāĻž āϝāĻĻāĻŋ āĻŦāĻžāĻŽ āĻ āĻĒāĻžāϰā§āύā§āĻĄāĻāĻŋ undefined āĻŦāĻž null āύāĻž āĻšāϝāĻŧāĨ¤
function first() {
console.log("First Function");
return undefined;
}
function second() {
console.log('Second Function');
return false;
}
function third() {
console.log('Third Function');
return "foo";
}
console.log(first() ?? third());
āĻāĻĒāϰā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖāĻāĻŋ āϞāĻā§āώā§āϝ āĻāϰā§āύ, āĻāĻāĻžāύ⧠āĻĒā§āϰāĻĨāĻŽā§ “First āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻāϞ āĻāϰāĻž āĻšā§ā§āĻā§āĨ¤” āϤāĻžāϰāĻĒāϰ “Third āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻāϞ āĻāϰāĻž āĻšā§ā§āĻā§ āĻāĻŦāĻ āϏāĻŦāĻļā§āώ⧠“foo” āĻĒā§āϰāĻŋāύā§āĻ āĻšāĻŦā§ āĨ¤ āϝā§āĻšā§āϤ⧠first() undefined āϰāĻŋāĻāĻžāϰā§āύ āĻāϰ⧠āϤāĻžāĻ āĻĻā§āĻā§ āĻĢāĻžāĻāĻļāύāĻ āĻŽā§āϞā§āϝāĻžāϝāĻŧāύ āĻāϰāĻž āĻšāĻŦā§āĨ¤
console.log(second() ?? third());
āĻāϰ āĻāĻā§āώā§āϤā§āϰā§Â āĻĒā§āϰāĻĨāĻŽā§ “Second āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻāϞ āĻāϰāĻž āĻšā§ā§āĻā§ āϝāĻž “false” āĻĒā§āϰāĻŋāύā§āĻ āĻšāĻŦā§āĨ¤Â āϝā§āĻšā§āϤ⧠second() āĻĢāĻžāĻāĻļāύāĻāĻŋ false āϰāĻŋāĻāĻžāϰā§āύ āĻāϰ⧠(āϝāĻž null or undefined āύā§), āϤāĻžāĻ āĻĄāĻžāύāĻĻāĻŋāĻā§āϰ āĻāĻā§āϏāĻĒā§āϰā§āĻļāύāĻāĻŋ āĻāϰ āĻŽā§āϞā§āϝāĻžāϝāĻŧāύ āĻāϰāĻž āĻšāĻŦā§ āύāĻžāĨ¤