В чем смысл этих утверждений || {} в этом коде JavaScript
Я только начинаю работать с JavaScript и читаю шаблон модуля.
Я искал на этой странице: http://www.adequatelygood.com/JavaScript-Module-Pattern-In-Depth.html и не могу понять, что за || {} заявления означают.
Есть немало мест, где написан этот код: (UTIL || {}));
Кто-нибудь может объяснить, что означают эти утверждения и что они делают?
Я предполагаю, что || означает ИЛИ - но я не слишком уверен в этом контексте.
Вот код из заключения статьи. Вторая и предпоследняя строки - примеры кода, который меня озадачил.
var UTIL = (function (parent, $) {
var my = parent.ajax = parent.ajax || {};
my.get = function (url, params, callback) {
// ok, so I'm cheating a bit :)
return $.getJSON(url, params, callback);
};
// etc...
return parent;
}(UTIL || {}, jQuery));
4 ответа
Это используется для определения переменной, если она не установлена. Вы можете сделать это, чтобы убедиться, что значение установлено!
например:
function iHaveParameters(param1, param2) {
param1 = param1 || {} //empty object
param2 = param2 || "This should be a string"
}
И, конечно, как уже отмечалось, оно будет вызывать второе значение только тогда, когда первая переменная равна нулю.
И в вашем случае это фактически установка переменной только тогда, когда она не установлена, то есть если вы включите скрипт 3000 раз, переменная будет определена только один раз, избегая использования ЦП. Таким образом, вы можете потребовать загрузки функции, например
Как уже было сказано, это пустой объект JavaScript.
Что не так очевидно, я думаю, почему вы это сделаете. Распространенная причина - сделать ваш код безопасным, если объект null
или же undefined
, Рассмотрим пример, когда вам передают объект и вы хотите получить доступ к его атрибуту:
function myFunc(obj) {
console.log(obj.name);
}
Это нормально, если только obj
является undefined
, в этом случае ваш код потерпит крах.
Более безопасный способ часто:
function myFunc(obj) {
console.log((obj || {}).name);
}
Сейчас если obj
является undefined
тогда вместо этого создается новый пустой объект. Получение .name
это безопасно и просто вернется undefined
,
Это явно упрощенный пример, но этот метод широко используется для того, чтобы сделать код короче и легче читать (меньше тестов и веток, чем if
заявления везде).
Это означает: если объект до ||
имеет значение null, используйте новый пустой объект {}
вместо.
Подробнее об операторе читайте здесь: есть ли в JavaScript оператор "слияния"?
{} - это короткий способ объявления пустого объекта, так же, как при использовании [] объявляется пустой массив.
var my = parent.ajax = parent.ajax || {};
означает, что если объект parent.ajax
существует, затем установите его в качестве значения. Если нет, установите вместо этого пустой объект.