我试图在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;
};
当前回答
在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
其他回答
我知道有两种方法: 1. 返回为数组 2. 返回为对象
下面是我找到的一个例子:
<script>
// Defining function
function divideNumbers(dividend, divisor){
var quotient = dividend / divisor;
var arr = [dividend, divisor, quotient];
return arr;
}
// Store returned value in a variable
var all = divideNumbers(10, 2);
// Displaying individual values
alert(all[0]); // 0utputs: 10
alert(all[1]); // 0utputs: 2
alert(all[2]); // 0utputs: 5
</script>
<script>
// Defining function
function divideNumbers(dividend, divisor){
var quotient = dividend / divisor;
var obj = {
dividend: dividend,
divisor: divisor,
quotient: quotient
};
return obj;
}
// Store returned value in a variable
var all = divideNumbers(10, 2);
// Displaying individual values
alert(all.dividend); // 0utputs: 10
alert(all.divisor); // 0utputs: 2
alert(all.quotient); // 0utputs: 5
</script>
另一个值得一提的是新引入的(ES6)语法,除了析构赋值,还使用了对象创建简写。
function fun1() {
var x = 'a';
var y = 'b';
return { x, y, z: 'c' };
// literally means { x: x, y: y, z: 'c' };
}
var { z, x, y } = fun1(); // order or full presence is not really important
// literally means var r = fun1(), x = r.x, y = r.y, z = r.z;
console.log(x, y, z);
这个语法可以用babel或其他旧浏览器的js polyfiller填充,但幸运的是,现在本机适用于最新版本的Chrome和Firefox。
但是在创建一个新对象时,这里涉及到内存分配(以及最终的gc负载),因此不要期望从它那里获得太多性能。JavaScript不是开发高度优化的东西的最佳语言,但如果需要,你可以考虑将结果放在周围的对象上,或者是JavaScript、Java和其他语言之间常见的性能技巧。
不能,但是你可以返回一个包含你的值的数组:
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 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 a(){
var d=2;
var c=3;
var f=4;
return {d:d,c:c,f:f}
}
const {d,c,f} = a()