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

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

当前回答

只返回一个对象文字

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);

其他回答

从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()

在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

不能,但是你可以返回一个包含你的值的数组:

function getValues() {
    return [getFirstValue(), getSecondValue()]
}

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

const [first, second] = getValues()

这被称为解构赋值,每个主要的JS环境都支持它。它等价于如下:

const values = getValues()
const first = values[0]
const second = values[1]

如果你想给每个值赋一个名字,你也可以返回一个对象:

function getValues() {
    return {
        first: getFirstValue(),
        second: getSecondValue(),
    }
}

要访问它们:

const {first, second} = getValues()

也就是:

const values = getValues()
const first = values.first
const second = values.second

强烈建议返回一个对象而不是数组,除非值作为简单的元组有意义,例如,坐标对[x, y]。使用数组时,很容易忘记哪个值是哪个值,以后更难添加更多的值,而且使用TypeScript或JSDoc正确输入也稍微困难一些。

几天前,我有类似的要求,从我创建的函数中获得多个返回值。

从许多返回值,我需要它只返回特定的值为一个给定的条件,然后其他返回值对应于其他条件。


以下是我如何做到这一点的例子:

功能:

function myTodayDate(){
    var today = new Date();
    var day = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
    var month = ["January","February","March","April","May","June","July","August","September","October","November","December"];
    var myTodayObj = 
    {
        myDate : today.getDate(),
        myDay : day[today.getDay()],
        myMonth : month[today.getMonth()],
        year : today.getFullYear()
    }
    return myTodayObj;
}

从函数返回的对象获取所需的返回值:

var todayDate = myTodayDate().myDate;
var todayDay = myTodayDate().myDay;
var todayMonth = myTodayDate().myMonth;
var todayYear = myTodayDate().year;

回答这个问题的关键是分享以良好格式获取Date的方法。希望对你有所帮助:)

我并不是在这里添加新内容,而是另一种替代方法。

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