patternjavascriptCritical
Return multiple values in JavaScript?
Viewed 0 times
valuesmultiplejavascriptreturn
Problem
I am trying to return two values in JavaScript. Is this possible?
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};Solution
No, but you could return an array containing your values:
Then you can access them like so:
This is called destructuring assignment and is supported by every major JS environment. It's equivalent to the following:
You can also return an object if you want to assign a name to each value:
And to access them:
Which is the same as:
It is highly recommended to return an object instead of an array unless the values make sense as a simple tuple, e.g. a coordinate pair
function getValues() {
return [getFirstValue(), getSecondValue()]
}Then you can access them like so:
const [first, second] = getValues()This is called destructuring assignment and is supported by every major JS environment. It's equivalent to the following:
const values = getValues()
const first = values[0]
const second = values[1]You can also return an object if you want to assign a name to each value:
function getValues() {
return {
first: getFirstValue(),
second: getSecondValue(),
}
}And to access them:
const {first, second} = getValues()Which is the same as:
const values = getValues()
const first = values.first
const second = values.secondIt is highly recommended to return an object instead of an array unless the values make sense as a simple tuple, e.g. a coordinate pair
[x, y]. With an array, it's easy to forget which value is which, it's harder to add more values later, and it's marginally more difficult to correctly type with TypeScript or JSDoc.Code Snippets
function getValues() {
return [getFirstValue(), getSecondValue()]
}const [first, second] = getValues()const values = getValues()
const first = values[0]
const second = values[1]function getValues() {
return {
first: getFirstValue(),
second: getSecondValue(),
}
}const {first, second} = getValues()Context
Stack Overflow Q#2917175, score: 1900
Revisions (0)
No revisions yet.