Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Непонятен синтаксис (https://javascript.ru/forum/misc/44773-neponyaten-sintaksis.html)

nahkar 01.02.2014 20:11

Непонятен синтаксис
 
Читаю литература по JS и натыкаюсь на такой кусок кода:
var asd = asd || {};
Я понимаю что тут создают объект мне не понятно условие || (это на сколько я знаю оператор ИЛИ) к чему здесь этот оператор?

ksa 01.02.2014 20:16

Цитата:

Сообщение от nahkar
к чему здесь этот оператор?

А ты прочитай его описание...
Цитата:

Возвращает expr1, если оно может быть преобразовано к true; в ином случае возвращает expr2.
http://javascript.ru/boolean-operators

Т.о. такая конструкция используется для присвоения значений "по умолчанию"...

function (A,B) {
   A=A||0;
   B=B||1;
};

kostyanet 02.02.2014 12:54

Цитата:

Сообщение от nahkar
к чему здесь этот оператор?

Это называется shortcut.

var a = a || {}; // если а не определена, то присвоить а ссылку на новый пустой объект.

Канонично:

if(!a)
a = {};

Потому что в js нельзя задать умолчание в аргументах функции

function some(a = {}) {}

Поэтому срезают внутри функции как выше нарисовано.

Кстати, это от браузера зависит, FF такой синтаксис с дефолтами в аргументах хавает, а Хром плюется.


Часовой пояс GMT +3, время: 10:07.