2013-04-29 4 views
13

Im смотрит на некоторые примеры Backbone.js и у них есть var app = app || {}; в верхней части всех файлов .js. Я понимаю буквальное значение этого, но что он делает со ссылкой на все остальное?Что делает «var app = app || {};» делать?

Редактировать: вы, ребята, действительно очень быстро.

ответ

20

Он будет определять переменную app пустым объектом, если он еще не определен.

Это работает, потому что, будучи undefined, оценивает false в Javascript.

Если он определен, он все равно может быть переопределен как пустой объект, если он имеет значение, которое вычисляется до false, например пустую строку.

+2

В частности ... определяет 'приложение' для пустого объекта, если значение' app' является ложным. – Brad

+0

создание! upvoted +1 –

+0

* «Если он уже определен, он будет переопределять его в пределах области действия файла». * Что переопределяет его в пределах объема файла? Переменная уже находится в области видимости. – 2013-04-29 17:38:05

5

Это означает «определить приложение как пустой объект, если он еще не определен».

Оператор OR в JavaScript не обязательно дает boolean. Если левая часть выражения дает false, то присваивание принимает правую часть выражения.

2

Если app уже определен, он ничего не делает. Если app не определен, то это эквивалентно var app = {};

18

|| оператор в JavaScript возвращает первый операнд, если это «truthy». Если нет, он вернет второй операнд. Если app не был назначен, он будет undefined, что является «ложным». Таким образом, если это не определено или иначе ложно, пустой объект {} будет назначен app.

+1

+1 Единственный правильный ответ. – 2013-04-29 17:36:04

Смежные вопросы