Вы можете сделать это начиная с Javascript 1.7, используя «деструктурирующие назначения» . Обратите внимание, что они недоступны в более старых версиях Javascript (т.е. ни в ECMAScript 3-й, ни в 5-й редакции).
Позволяет одновременно назначать 1+ переменных:
var [x, y] = [1, 2];
x; // 1
y; // 2
// or
[x, y] = (function(){ return [3, 4]; })();
x; // 3
y; // 4
Вы также можете использовать деструктуризацию объекта в сочетании с сокращением значения свойства , чтобы назвать возвращаемые значения в объекте и выбрать те, которые вам нужны:
let {baz, foo} = (function(){ return {foo: 3, bar: 500, baz: 40} })();
baz; // 40
foo; // 3
И, кстати, не обманывайте себя тем фактом, что ECMAScript позволяет вам return 1, 2, ...
. То, что действительно происходит там, не то, что может показаться. Выражение в выражении возврата - 1, 2, 3
- это не что иное, как оператор запятой, применяемый к числовым литералам (1
, 2
и 3
) последовательно, что в итоге приводит к значению его последнего выражения - 3
, Вот почему return 1, 2, 3
функционально идентичен не более чем return 3
.
return 1, 2, 3;
// becomes
return 2, 3;
// becomes
return 3;