Es mēģinu atgriezt divas vērtības JavaScript. Vai tas ir iespējams?
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};
Nē, bet jūs varētu atgriezt masīvu, kas satur jūsu vērtības:
function getValues() {
return [getFirstValue(), getSecondValue()];
}
Tad jūs varat piekļūt tām šādi:
var values = getValues();
var first = values[0];
var second = values[1];
Izmantojot jaunāko ECMAScript 6 sintaksi*, varat arī intuitīvāk destrukturizēt atgriešanas vērtību:
const [first, second] = getValues();
Ja vēlaties katrai atgrieztajai vērtībai pievienot "etiķetes" (vieglāk uzturēt), varat atgriezt objektu:
function getValues() {
return {
first: getFirstValue(),
second: getSecondValue(),
};
}
Un, lai tiem piekļūtu:
var values = getValues();
var first = values.first;
var second = values.second;
Vai ar ES6 sintaksi:
const {first, second} = getValues();
* Skatiet šo tabulu par pārlūkprogrammu saderību. Būtībā visas modernās pārlūkprogrammas, izņemot IE, atbalsta šo sintaksi, bet ES6 kodu var kompilēt līdz IE saderīgam JavaScript kompilēšanas laikā, izmantojot tādus rīkus kā Babel.
Sākot ar Javascript 1.7 versiju, to var izdarīt, izmantojot "destructuring assignments". Ņemiet vērā, ka tās nav pieejamas vecākās Javascript versijās (tas nozīmē - ne ECMAScript 3., ne 5. izdevumā).
Tas ļauj vienlaicīgi piešķirt 1+ mainīgajiem:
var [x, y] = [1, 2];
x; // 1
y; // 2
// or
[x, y] = (function(){ return [3, 4]; })();
x; // 3
y; // 4
Jūs varat arī izmantot objekta destrukturizāciju apvienojumā ar īpašību vērtību saīsinājumu, lai nosauktu atgrieztās vērtības objektā un izvēlētos tās, kuras vēlaties:
let {baz, foo} = (function(){ return {foo: 3, bar: 500, baz: 40} })();
baz; // 40
foo; // 3
Starp citu, neļaujiet sevi maldināt ar to, ka ECMAScript ļauj atgriezt 1, 2, ...
. Patiesībā notiek kas cits, nekā varētu šķist. Atgriešanas izteiksmē 1, 2, 3
nav nekas cits kā komata operators, kas secīgi piemērots skaitliskajiem literāliem (1
, 2
un 3
), kas galu galā tiek novērtēts līdz tā pēdējās izteiksmes vērtībai - 3
. Tāpēc return 1, 2, 3
ir funkcionāli identisks tikai return 3
.
return 1, 2, 3;
// becomes
return 2, 3;
// becomes
return 3;
Vienkārši atgrieziet objekta literālu
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);