
این عملگر (نالیش کُولِسینگ) که به صورت دو علامت سوال کنار هم ?? هست، وقتی بین دو مقدار قرار بگیره، اولین مقداری رو برمیگردونه که null یا undefined نباشه. در مقایسه با عملگر Logical OR، برای این عملگر فقط null یا undefined بودن مقدارها مهم هست، نه falsy بودن اونها:
0 ?? "Hello" // 0 false ?? "Hello" // false "" ?? "Hello" // "" null ?? "Hello" // "Hello" undefined ?? "Hello" // "Hello"
برای سه مورد اول، اگه از عملگر Logical OR استفاده میکردیم، مقدارهای سمت راست درنظر گرفته میشد.
این عملگر به شکل ??= هست و برای نسبتدادن مقدار به یک متغیر استفاده میشه.
اگر کدی داریم به صورت زیر:
let x = null; if (x === null || x === undefined) { x = 12; }
میتونیم اون رو به این صورت بنویسیم:
let x = null; x ??= 12; alert(x); // 12
کد بالا تنها زمانی مقدار 12 رو به x نسبت میده که x یک مقدار nullish باشه (یعنی null یا undefined). به بیان کلیتر، عملیاتِ نسبت دادن به عبارت سمت چپ زمانی انجام میگیره که عبارت سمت چپ null یا undefined باشه.
Resources: