"JavaScript" bandau grąžinti dvi reikšmes. Ar tai įmanoma?
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};
Ne, bet galite grąžinti masyvą, kuriame yra jūsų reikšmės:
function getValues() {
return [getFirstValue(), getSecondValue()];
}
Tuomet galite jas pasiekti taip:
var values = getValues();
var first = values[0];
var second = values[1];
Naudodami naujausią ECMAScript 6 sintaksę* taip pat galite intuityviau destruktūrizuoti grąžinamąją vertę:
const [first, second] = getValues();
Jei norite kiekvienai grąžinamai vertei uždėti "etiketes" (lengviau prižiūrėti), galite grąžinti objektą:
function getValues() {
return {
first: getFirstValue(),
second: getSecondValue(),
};
}
Ir juos pasiekti:
var values = getValues();
var first = values.first;
var second = values.second;
Arba naudojant ES6 sintaksę:
const {first, second} = getValues();
* Dėl suderinamumo su naršyklėmis žr. šią lentelę. Iš esmės visos šiuolaikinės naršyklės, išskyrus IE, palaiko šią sintaksę, tačiau ES6 kodą galite sukompiliuoti į IE suderinamą "JavaScript" kūrimo metu naudodami tokias priemones kaip Babel.
Nuo Javascript 1.7 ir vėlesnių versijų tai galite padaryti naudodami "destructuring assignments". Atkreipkite dėmesį, kad senesnėse "Javascript" versijose jų nėra (t. y. nei su ECMAScript 3, nei 5 leidimais).
Tai leidžia vienu metu priskirti 1+ kintamiesiems:
var [x, y] = [1, 2];
x; // 1
y; // 2
// or
[x, y] = (function(){ return [3, 4]; })();
x; // 3
y; // 4
Taip pat galite naudoti objekto destruktūrizavimą kartu su savybių verčių trumpiniais, kad įvardytumėte objekto grįžtamąsias vertes ir išsirinktumėte norimas:
let {baz, foo} = (function(){ return {foo: 3, bar: 500, baz: 40} })();
baz; // 40
foo; // 3
Beje, neapsigaukite dėl to, kad ECMAScript leidžia grąžinti 1, 2, ...
. Iš tikrųjų ten vyksta ne tai, kas gali atrodyti. Grąžinimo sakinyje esanti išraiška - 1, 2, 3
- yra ne kas kita, kaip kablelio operatorius, nuosekliai taikomas skaitiniams literatalams (1
, 2
ir 3
), kuris galiausiai įvertinamas paskutinės išraiškos - 3
- verte. Štai kodėl return 1, 2, 3
yra funkciškai identiškas ne kam kitam, o return 3
.
return 1, 2, 3;
// becomes
return 2, 3;
// becomes
return 3;
Tiesiog grąžinkite objekto pažodinį pavadinimą
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);