我试图在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;
};
当前回答
我建议使用最新的解构赋值(但要确保它在您的环境中得到支持)
var newCodes = function () {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return {firstCodes: dCodes, secondCodes: dCodes2};
};
var {firstCodes, secondCodes} = newCodes()
其他回答
你可以从ECMAScript 6开始使用数组和“解构赋值”来做到这一点。请注意,这些在旧的Javascript版本中是不可用的(也就是说,ECMAScript第三版和第五版都不可用)。
它允许你同时赋值给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允许返回1,2,....这一事实所愚弄那里真正发生的不是表面上看起来的那样。return语句中的表达式- 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 a(){
var d = 2;
var c = 3;
var f = 4;
return {d: d, c: c, f: f};
}
然后使用
const {d, c, f} = a();
新版本:
function a(){
var d = 2;
var c = 3;
var f = 4;
return {d, c, f}
}
从ES6开始,你可以这样做
let newCodes = function() {
const dCodes = fg.codecsCodes.rs
const dCodes2 = fg.codecsCodes2.rs
return {dCodes, dCodes2}
};
let {dCodes, dCodes2} = newCodes()
返回表达式{dCodes, dCodes2}是属性值的简写,等价于这个{dCodes: dCodes, dCodes2: dCodes2}。
最后一行的赋值叫做对象析构赋值。它提取对象的属性值并将其赋值给同名变量。如果你想把返回值赋给不同名称的变量,你可以这样做let {dCodes: x, dCodes2: y} = newCodes()
你还可以:
function a(){
var d=2;
var c=3;
var f=4;
return {d:d,c:c,f:f}
}
const {d,c,f} = a()
在javascript中返回多个值的一个非常常见的方法是使用一个对象字面量,所以像这样:
const myFunction = () => {
const firstName = "Alireza",
familyName = "Dezfoolian",
age = 35;
return { firstName, familyName, age};
}
然后得到这样的值:
myFunction().firstName; //Alireza
myFunction().familyName; //Dezfoolian
myFunction().age; //age
或者更短的方式:
const {firstName, familyName, age} = myFunction();
把它们分开,比如:
firstName; //Alireza
familyName; //Dezfoolian
age; //35