在JavaScript中返回多个值?

我试图在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 [dCodes, dCodes2];
};

然后你可以像这样访问它们:

var codes = newCodes();
var dCodes = codes[0];
var dCodes2 = codes[1];

如果你想在每个返回值上加上“标签”(更容易维护),你可以返回一个对象:

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

并访问它们:

var codes = newCodes();
var dCodes = codes.dCodes;
var dCodes2 = codes.dCodes2;

你可以使用“解构赋值”从Javascript 1.7开始。 请注意,这些在旧的Javascript版本中不可用(意思是 - ECMAScript第3版和第5版都没有)。

它允许您同时分配给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 -只不过是施加于数字文字逗号运算符( 12 ,和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);
链接地址: http://www.djcxy.com/p/63113.html

上一篇: Return multiple values in JavaScript?

下一篇: differences iphone safari webkit vs mac safari