我试图在 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。
您可以从 Javascript 1.7 开始使用“解构分配” 进行此操作 。请注意,这些在较旧的 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 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;
只需返回一个对象文字
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);