//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();
var newCodes = function () {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return {firstCodes: dCodes, secondCodes: dCodes2};
};
var {firstCodes, secondCodes} = newCodes()
15
除了像其他人推荐的那样返回数组或对象之外,您还可以使用收集器函数(类似于The Little Schemer中的函数):
function a(collector){
collector(12,13);
}
var x,y;
a(function(a,b){
x=a;
y=b;
});
function a(){
var d=2;
var c=3;
var f=4;
return {d:d,c:c,f:f}
}
const {d,c,f} = a()
-1
只需返回一个对象文字
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);
1
几天前我有类似的要求从我创建的函数中获取多个返回值 .
From many return values , i needed it to return only specific value for a given condition and then other return value corresponding to other condition.
这是我如何做到的例子:
Function:
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;
}
Getting Required return value from object returned by function :
var todayDate = myTodayDate().myDate;
var todayDay = myTodayDate().myDay;
var todayMonth = myTodayDate().myMonth;
var todayYear = myTodayDate().year;
回答这个问题的重点是分享这种以良好格式获取日期的方法 . 希望它能帮助你:)
6
另一个值得一提的新引入(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);
14 回答
不,但您可以返回包含您的值的数组:
然后您可以这样访问它们:
如果要在每个返回值上放置“标签”(更易于维护),则可以返回一个对象:
并访问它们:
最好的方法是
然后用
返回4
在ES6中,您可以使用此代码
Ecmascript 6包含“解构分配”(如kangax所述),因此在所有浏览器(不仅仅是Firefox)中,您将能够捕获一组值而无需为了捕获它们而创建命名数组或对象 .
您可以在Firefox中试用它!
从ES6开始,你就可以做到这一点
返回表达式
{dCodes, dCodes2}
是 property value shorthand ,等同于{dCodes: dCodes, dCodes2: dCodes2}
.最后一行的这个赋值叫做 object destructing assignment . 它提取对象的属性值并将其分配给同名变量 . 如果您想将返回值分配给不同名称的变量,您可以这样做
let {dCodes: x, dCodes2: y} = newCodes()
您可以使用"destructuring assignments"从Javascript 1.7开始执行此操作 . 请注意,这些版本在较旧的Javascript版本中不可用(意思是 - 无论是ECMAScript 3rd还是5th edition) .
它允许您同时分配1个变量:
您还可以使用object destructuring combined with property value shorthand命名对象中的返回值并选择所需的值:
顺便说一句,不要被ECMAScript允许你__19851_这一事实所迷惑 . 真正发生的事情并非如此 . return语句中的表达式 -
1, 2, 3
- 只是一个逗号运算符,它依次应用于数字文字(1
,2
和3
),最终计算其最后一个表达式的值 -3
. 这就是为什么return 1, 2, 3
在功能上只与return 3
相同 .你可以使用“对象”
在JS中,我们可以轻松返回带有数组或对象的元组,但不要忘记! => JS是面向
callback
的语言,这里有一个小秘密"returning multiple values",没有人提到过,试试这个:变
:)
嘭!这只是解决问题的另一种方法 .
我建议使用最新的 destructuring assignment (但make sure it's supported in your environment)
除了像其他人推荐的那样返回数组或对象之外,您还可以使用收集器函数(类似于The Little Schemer中的函数):
我做了一个jsperf测试,看看三种方法中哪一种更快 . 数组最快,收集器速度最慢 .
http://jsperf.com/returning-multiple-values-2
一切都正确 .
return
逻辑上从左到右处理并返回最后一个值 .你也可以这样做:
只需返回一个对象文字
几天前我有类似的要求从我创建的函数中获取多个返回值 .
From many return values , i needed it to return only specific value for a given condition and then other return value corresponding to other condition.
这是我如何做到的例子:
Function:
Getting Required return value from object returned by function :
回答这个问题的重点是分享这种以良好格式获取日期的方法 . 希望它能帮助你:)
另一个值得一提的新引入(ES6)语法除了破坏赋值之外还使用对象创建速记 .
这种语法可以与旧版浏览器的babel或其他js polyfiller一起填充,但幸运的是现在可以使用最新版本的Chrome和Firefox .
但是,作为一个新对象,这里涉及内存分配(以及最终的gc加载),不要期望它有太多的性能 . JavaScript不是用于开发高度优化的东西的最佳语言,但如果需要,您可以考虑将结果放在周围的对象或这些技术上,这些技术通常是JavaScript,Java和其他语言之间的常见性能技巧 .