我试图在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;
};
当前回答
只返回一个对象文字
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);
其他回答
不能,但是你可以返回一个包含你的值的数组:
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的方法。希望对你有所帮助:)
你可以从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;
在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
在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);
};
:)
砰!这只是解决问题的另一种方法。