что делает следующий код в java script:
var x = x || {};
что делает следующий код в java script:
var x = x || {};
||
является логическим OR
.
Выражение
var x = x OR {};
должно стать более очевидным.
Если x
имеет значение фальшивости (например, null
, undefined
, 0
, ""
), мы назначаем x
пустой объект {}
, иначе просто сохраните текущее значение. Длинная версия будет выглядеть как
var x = x ? x : {};
Если x
- undefined (или null или любое другое значение false
), он становится пустым.
Нельзя писать "var x = x || {};" как таковой.
Единственное обстоятельство, когда это не идентично "var x = {};" когда x ранее был инициализирован в той же области. Это аморально. Примечание:
function() {
x = {foo:"bar"};
var x = x || {};
}
То же самое, что и более запутанное, чем
function() {
var x = {foo:"bar"};
x = x || {};
}
В любом случае нет ссылки на значение символа "x" в глобальной области.
Это выражение представляет собой запутанный вариант идиомы законной ленивой инициализации свойств:
function( foo ) {
foo.x = foo.x || {};
foo.x.y = "something";
}
Присвойте x
новому пустому объекту, если он null
(undefined, false) или сохраните его существующее значение, если не null
.
Если х не определено или не назначено значение, в качестве значения по умолчанию для него будет выбран пустой объект.
т.е.
for example
x = 10
var x = x || {};
вывод должен быть
10
если значение x не присвоено. выходное значение должно быть,
undefined
если var x определен, то это будет определенное значение. Иначе это будет пустой объект вроде [object Object]
Например, в следующем блоке кода x будет 10
:
var x = 10;
x = x || {}
Однако, если:
var x = x || {};
то x
будет [object Object]