我试图在JavaScript中返回两个值。这可能吗?

var newCodes = function() {  
    var dCodes = fg.codecsCodes.rs;
    var dCodes2 = fg.codecsCodes2.rs;
    return dCodes, dCodes2;
};

当前回答

你还可以:

function a(){
  var d=2;
  var c=3;
  var f=4;
  return {d:d,c:c,f:f}
}

const {d,c,f} = a()

其他回答

Ecmascript 6包括“解构赋值”(正如kangax提到的),因此在所有浏览器(不仅仅是Firefox)中,您将能够捕获值的数组,而不必为捕获它们的唯一目的而创建命名数组或对象。

//so to capture from this function
function myfunction()
{
 var n=0;var s=1;var w=2;var e=3;
 return [n,s,w,e];
}

//instead of having to make a named array or object like this
var IexistJusttoCapture = new Array();
IexistJusttoCapture = myfunction();
north=IexistJusttoCapture[0];
south=IexistJusttoCapture[1];
west=IexistJusttoCapture[2];
east=IexistJusttoCapture[3];

//you'll be able to just do this
[north, south, west, east] = myfunction(); 

你已经可以在Firefox中尝试了!

你可以从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;

你可以使用Object

function newCodes(){
    var obj= new Object();
    obj.dCodes = fg.codecsCodes.rs;
    obj.dCodes2 = fg.codecsCodes2.rs;

    return obj;
}

在JS中,我们可以很容易地返回一个数组或对象的元组,但不要忘记!=> JS是一种面向回调的语言,这里有一个“返回多个值”的小秘密,没有人提到过,试试这个:

var newCodes = function() {  
    var dCodes = fg.codecsCodes.rs;
    var dCodes2 = fg.codecsCodes2.rs;
    return dCodes, dCodes2;
};

就变成了

var newCodes = function(fg, cb) {  
    var dCodes = fg.codecsCodes.rs;
    var dCodes2 = fg.codecsCodes2.rs;
    cb(null, dCodes, dCodes2);
};

:)

砰!这只是解决问题的另一种方法。

使用模板字面量' ${}'可以返回一个包含许多值和变量的字符串

如:

var newCodes = function() {  
    var dCodes = fg.codecsCodes.rs;
    var dCodes2 = fg.codecsCodes2.rs;
    return `${dCodes}, ${dCodes2}`;
};

它既简短又简单。