Операторы логического присваивания в JavaScript

Javascript (ES2021) теперь поддерживает возможность комбинировать логические операции и операцию присваивания с помощью новых операторов &&=||= и ??=. Ранее составные операторы присваивания были возможны только с математическими и побитовыми операциями, – пишет сайт webdevblog.ru в своем переводе статьи Logical Assignment Operators.

Логическое И присваивание &&=

Оператор логического И (AND) присваивания x &&= y выполняет присваивание, только если x истинно. Например:

let a = 1;
let b = 0;
a &&= 2;
console.log(a); // output: 2
b &&= 2;
console.log(b); // output: 0

Если левое выражение является ложным, то правое выражение не оценивается, поэтому значение b не переопределено, так как 0 является ложным.

a &&= 2 эквивалентно a && (a = 2), значение a переназначено, потому что оно изначально было истинным.

Логическое ИЛИ присваивание ||=

Оператор логического ИЛИ (OR) x ||= y присваивает, только если x является ложным.

const a = 50;
const b = '';
a ||= 10;
console.log(a);  // output: 50
b ||= 'string is empty.';
console.log(b); // output: "string is empty."

В приведенном выше примере a ||= 10 эквивалентно a || (a = 10), но поскольку значение a истинно, то правое значение не будет присвоено левому оператору

Если вы делаете проверку на ложное значение, таких типов данных как пустая строка или 0, необходимо использовать ||=, в противном случае для проверки значений null или undefined  следует использовать логический оператор ?? =.

Логическое нулевое присвоение ??=

Оператор логического нулевого присваивания x ?? = y назначает, только если x имеет значение null или undefined.

const a = { limt: 50 };
a.limit ??= 10;
console.log(a.limit); // output: 50
a.speed ??= 25;
console.log(a.speed); // output: 25

Логическое нулевое выражение переназначает левое выражение, если левая часть является null , или undefined.

В приведенном выше примере переназначение a.limit не выполняется, потому что его значение определено как 50, что не является null или undefined.

Но a.speed первоначально будет иметь значение undefined, поэтому оценивается правое выражение, которое эквивалентно a.speed = 25, то есть конечный результат будет a = {limit: 50, speed: 25}.

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

fansport girişhttps://beverlywoodbakery.com/ deneme bonusugrandpashabetgrandpashabetbahis sitelericratosroyalbetdedebetgrandpashabetküçükçekmece escorthttps://www.bakirkoyfal.com/fatihescortsitesi.comholiganbet girişselcuksportshdballettea tropazhacklinkonwinonwin giriştaraftariumatakoy escortatakoy escortJojobetAtaşehir Escortdeneme bonusu veren sitelersahabet girişstarzbethttps://halkaliescortmanken.xyz/damabetsahabetsahabetTipobetjojobetjojobet girişjojobetbursa EscortNorabahisvozol puff fiyatjojobetselçuksportstaraftarium24justin tvinat tvklasbahisbetcupcaddebetbetpublicfixbetbetofficenerobetjojobetdeneme bonusu veren sitelerGrandpashabetonwinsahabetdeneme bonusu veren sitelersekabetmatbetartemisbet güncel girişkadıköy escortsuperbetinsekabetcasibom twittersahabet girişmatbet girişescort kadıköyonwinmarsbahis güncel girişümraniye escortnorabahissahabetmeritkingbayconti girişGrandpashabetonwinbets10grandpashabetsahabettümbetjojobet girişgrandpashabetcasilot girişhttps://canlicasino.shorthandstories.com/https://canlicasino.shorthandstories.com/bahis sitelerijojobetjojobet girişjojobet girişjojobetDidim escortistanbul escortdeneme bonusu kralbet güncel girişhiltonbetJOJOBETistanbul escortşişli escortjojobetjojobetjojobetcasibomHoliganbet grandpashabet1xbetjojobetholiganbetcasibom güncel girişdeneme bonusudeneme bonusu veren sitelermatbetjojobetmeritking girişholiganbet girişBetturkeydeneme bonusu veren sitelercasibomonwinonwinonwinmarsbahiscasibomdeneme bonusukingroyaljojobetultrabetcasibom girişimajbetimajbettjojobetholiganbetsahabetOtobetMavibetMavibetBetturkeyLunabetotobetsahabetnakitbahisjojobetsuperbetinsuperbetinkralbetholiganbetbetebetsahabetsahabetpusulabetotobetonwinmobilbahismavibetmatbetmarsbahismadridbetimajbetholiganbetbetturkeyjojobetdinamobetgrandpashabet - grandpashabet girişbetebetultrabetnakitbahisjojobetsahabet - sahabet girişmatbet girişkralbetotobetzbahismeritbetjojobetholiganbetmarsbahisonwinsahabetsekabetmatbetimajbetultrabetfixbetmatbetjojobetcanlı maç izlejustin tvalobet girişholiganbetholiganbet girişholiganbet güncel giriş adresibetturkeytarafbetpusulabetultrabetfixbetjojobetpusulabetkulisbetJojobetsekabet girişonwin girişholiganbet girişjojobet - jojobet girişmarsbahis - marsbahis girişbahiscom1xbet - 1xbet girişonwinhttps://www.escortbayanlariz.net/
Прокрутить вверх