在 JavaScript 中返回多个值?
2022-08-29 22:08:25
我试图在JavaScript中返回两个值。这可能吗?
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};
我试图在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();
如果要在每个返回值上放置“标签”(更易于维护),则可以返回一个对象:
function getValues() {
return {
first: getFirstValue(),
second: getSecondValue(),
};
}
要访问它们:
var values = getValues();
var first = values.first;
var second = values.second;
或者使用 ES6 语法:
const {first, second} = getValues();
* 请参阅此表了解浏览器兼容性。基本上,除了IE之外,所有现代浏览器都支持这种语法,但是你可以在构建时使用Babel等工具将ES6代码编译为与IE兼容的JavaScript。
从 ECMAScript 6 开始,您可以使用数组和“解构赋值”来执行此操作。请注意,这些在较旧的Javascript版本中不可用(这意味着 - 无论是ECMAScript 3rd还是5th版本)。
它允许您同时分配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 语句中的表达式 — — 只不过是按顺序应用于数字文本 ( 、 和 ) 的逗号运算符,其最终计算结果为其最后一个表达式的值 — 。这就是为什么在功能上与.no more相同的原因。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;