Я создавал структуру параметров объекта для использования при инициализации плагина. Конкретный плагин или структура не имеют значения, но допустим, что это было что-то простое, например следующее:
{
key1:'val1',
key2: {
subkey1: 'subval1'
}
}
Я строил общую структуру в двух разных объектных переменных, например так:
var key2 = {subkey1: 'subval1'};
var finalStructure = {
key1: 'val1',
key2 <-- oops! instead of key2: key2
};
Только позже я понял, что забыл указать ключ «key2:», и был удивлен, что общая структура действительно заканчивается key2: {...}.
Я изменил имя переменной key2 на foobar, и полученная структура использовала имя переменной 'foobar' в качестве имени ключа.
var foobar = {subkey1: 'subval1'};
var finalStructure = {
key1: 'val1',
foobar
};
в результате получилась такая структура:
{
key1:'val1',
foobar: {
subkey1: 'subval1'
}
}
Это задокументированное и ожидаемое поведение; безопасно делать? Или это удачная ошибка, из-за которой javascript ведет себя таким образом?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Is this documented and expected behavior; safe to do?
Да, это сокращенные свойства. Если вы укажете только имя переменной, объект примет имя переменной в качестве имени свойства, а затем присвоит ему значение, хранящееся в этой переменной.
// Shorthand property names (ES2015)
var a = 'foo', b = 42, c = {};
var o = {a, b, c};
console.info(o); // {a:'foo', b: 42, c: {}}
// The long, and quite redundant, route:
var o = { a: a, b: b, c: c }