Я намагаюсь повернути два значення в JavaScript. Чи можливо це зробити?
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};
Ні, але ви можете повернути масив, що містить ваші значення:
function getValues() {
return [getFirstValue(), getSecondValue()];
}
Тоді ви зможете отримати доступ до них таким чином:
var values = getValues();
var first = values[0];
var second = values[1];
За допомогою останнього синтаксису ECMAScript 6* ви також можете деструктурувати значення, що повертається, більш інтуїтивно зрозуміло:
const [first, second] = getValues();
Якщо ви хочете поставити &quo ;мітки&quo ; на кожне з повернених значень (простіше в обслуговуванні), ви можете повернути об'єкт:
function getValues() {
return {
first: getFirstValue(),
second: getSecondValue(),
};
}
І для доступу до них:
var values = getValues();
var first = values.first;
var second = values.second;
Або за допомогою синтаксису ES6:
const {first, second} = getValues();
* Дивіться цю таблицю щодо сумісності браузерів. В основному, всі сучасні браузери, крім IE, підтримують цей синтаксис, але ви можете скомпілювати код ES6 до IE-сумісного JavaScript під час збірки за допомогою таких інструментів, як Babel.;
Ви можете зробити це, починаючи з версії 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 дозволяє "повернути 1, 2, .... Насправді там відбувається зовсім не те, що може здатися. Вираз в операторі return -
1, 2, 3- це не що інше, як оператор коми, що застосовується до числових літералів (
1,
2, і
3) послідовно, який в результаті обчислюється до значення свого останнього виразу -
3. Тому
повернути 1, 2, 3функціонально тотожне не чому іншому, як
повернути 3`.
return 1, 2, 3;
// becomes
return 2, 3;
// becomes
return 3;
Просто повернути об'єктний літерал
function newCodes(){
var dCodes = fg.codecsCodes.rs; // Linked ICDs
var dCodes2 = fg.codecsCodes2.rs; //Linked CPTs
return {
dCodes: dCodes,
dCodes2: dCodes2
};
}
var result = newCodes();
alert(result.dCodes);
alert(result.dCodes2);