Поскольку connections
и messages
являются объектами, [
и ]
не обозначают индексы массива, а скорее являются синтаксисом для доступа к членам, где переменная используется для поиска имени переменной.
var path = 'x'
connections[path] = connections[path] || [];
Выше, поскольку path = 'x'
равно
connections.x = connections.x || [];
Говорят, если существует элемент двух объектов, названных значением path
, сохраните его(присвойте ему текущее значение), в противном случае (здесь используется ||
для объединения) создайте новый пустой массив или новый { version: 0, body: '' }
соответственно.
Обратите внимание, что объединение / логическое ИЛИ может легкобыть прикованным слева направо.Например, в некоторых случаях вы можете захотеть сделать что-то вроде этого:
function createItem(color) {
// if a color is specified in the arguments, use that
// otherwise, if a color is specified in the settings object for this instance
// of the current user control, use that. otherwise, fall back to the global
// default values. if none of these settings have been defined, use black.
color = color || instanceSettings.defaultColor
|| globalSettings.defaultColor
|| '#000000';
...
}