JavaScript에서 여러 값을 반환하시겠습니까?
JavaScript에서 두 개의 값을 반환하려고 합니다.이게 가능합니까?
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return dCodes, dCodes2;
};
아니요, 하지만 값을 포함하는 배열을 반환할 수 있습니다.
function getValues() {
return [getFirstValue(), getSecondValue()];
}
그런 다음 다음과 같이 액세스할 수 있습니다.
var values = getValues();
var first = values[0];
var second = values[1];
최신 ECMAScript 6 구문*을 사용하면 보다 직관적으로 반환값을 구축할 수도 있습니다.
const [first, second] = getValues();
반환된 각 값에 "라벨"을 붙이려는 경우(유지관리가 용이함) 개체를 반환할 수 있습니다.
function getValues() {
return {
first: getFirstValue(),
second: getSecondValue(),
};
}
액세스 방법:
var values = getValues();
var first = values.first;
var second = values.second;
또는 ES6 구문을 사용하는 경우:
const {first, second} = getValues();
* 브라우저 호환성에 대해서는 다음 표를 참조하십시오.기본적으로 IE를 제외한 모든 최신 브라우저는 이 구문을 지원하지만 빌드 시 Babel과 같은 도구를 사용하여 ES6 코드를 IE 호환 JavaScript로 컴파일할 수 있습니다.
ECMAScript 6 이후에서는 어레이 및 "할당 파기"를 사용하여 이 작업을 수행할 수 있습니다.이전 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
- 숫자 리터럴에 적용되는 쉼표 연산자에 불과합니다.1
,2
,그리고.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);
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()
Ecmascript 6 에는 Kangax 에서의 「파괴 할당」이 포함되어 있기 때문에, 파이어폭스 뿐만 아니라 모든 브라우저에서는, 값만을 캡처하기 위해서 이름 붙여진 어레이나 오브젝트를 작성할 필요는 없습니다.
//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();
Firefox에서 이미 시험해 볼 수 있습니다!
새롭게 도입된 (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는 어쨌든 최적의 것을 개발하는 데 최적의 언어는 아니지만, 필요하다면 결과를 주변 객체나 자바스크립트, 자바, 그리고 다른 언어 사이에서 흔히 볼 수 있는 성능 트릭에 넣는 것을 고려해 볼 수 있습니다.
function a(){
var d = 2;
var c = 3;
var f = 4;
return {d: d, c: c, f: f};
}
그 후 사용
const {d, c, f} = a();
새 버전:
function a(){
var d = 2;
var c = 3;
var f = 4;
return {d, c, f}
}
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
다른 사용자가 권장하는 배열 또는 개체를 반환하는 것 외에 수집기 함수(Little Schemer에 있는 것과 유사)를 사용할 수도 있습니다.
function a(collector){
collector(12,13);
}
var x,y;
a(function(a,b){
x=a;
y=b;
});
나는 세 가지 방법 중 어떤 것이 더 빠른지 보기 위해 jsperf 테스트를 했다.어레이가 가장 빠르고 수집기가 가장 느리다.
http://jsperf.com/returning-multiple-values-2
JS는 = JS입니다.callback
아직 아무도 언급하지 않은 "복수의 가치"에 대한 작은 비밀이 있습니다.
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);
};
:)
빵! 이것은 간단히 당신의 문제를 해결하는 또 다른 방법입니다.
다음 작업도 가능합니다.
function a(){
var d=2;
var c=3;
var f=4;
return {d:d,c:c,f:f}
}
const {d,c,f} = a()
이 질문이 검색 결과에 표시되므로 누락된 중요한 부분을 추가하여 완전한 리소스를 만듭니다.
오브젝트 파괴
오브젝트 파괴에서는 변수 이름과 같은 키 값을 사용할 필요가 없습니다.다음과 같이 변수 이름을 정의함으로써 다른 변수 이름을 할당할 수 있습니다.
const newCodes = () => {
let dCodes = fg.codecsCodes.rs;
let dCodes2 = fg.codecsCodes2.rs;
return { dCodes, dCodes2 };
};
//destructuring
let { dCodes: code1, dCodes2: code2 } = newCodes();
//now it can be accessed by code1 & code2
console.log(code1, code2);
어레이 파괴
어레이 파괴에서는 불필요한 값을 건너뛸 수 있습니다.
const newCodes = () => {
//...
return [ dCodes, dCodes2, dCodes3 ];
};
let [ code1, code2 ] = newCodes(); //first two items
let [ code1, ,code3 ] = newCodes(); //skip middle item, get first & last
let [ ,, code3 ] = newCodes(); //skip first two items, get last
let [ code1, ...rest ] = newCodes(); //first item, and others as an array
...rest
을 다 한 후에 가 없기 합니다.rest
.
이것이 이 질문에 어떤 가치를 더하기를 바랍니다.
"개체"를 사용할 수 있습니다.
function newCodes(){
var obj= new Object();
obj.dCodes = fg.codecsCodes.rs;
obj.dCodes2 = fg.codecsCodes2.rs;
return obj;
}
모두 정답입니다. return
는 논리적으로 왼쪽에서 오른쪽으로 처리되어 마지막 값을 반환합니다.
function foo(){
return 1,2,3;
}
>> foo()
>> 3
최신 파괴 할당을 사용하는 것이 좋습니다(단, 고객의 환경에서 지원되는지 확인하십시오).
var newCodes = function () {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return {firstCodes: dCodes, secondCodes: dCodes2};
};
var {firstCodes, secondCodes} = newCodes()
두 가지 방법을 알고 있습니다.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>
며칠 전, 저는 제가 만든 함수에서 여러 개의 반환값을 얻어야 하는 비슷한 요구사항이 있었습니다.
많은 반환값 중에서 특정 조건에 대한 특정 값만 반환하고 다른 조건에 대응하는 다른 반환값을 반환하는 것이 필요했습니다.
다음으로 그 방법의 예를 제시하겠습니다.
기능:
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;
이 질문에 대한 답변의 요점은 데이트를 좋은 형식으로 얻는 이 접근 방식을 공유하는 것입니다.도움이 되셨기를 바랍니다:)
나는 여기서 새로움을 더하는 것 말고는 다른 방법이 없다.
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
let [...val] = [dCodes,dCodes2];
return [...val];
};
글쎄, 네가 하려는 대로 정확히 할 수는 없어.하지만 아래에 있을 가능성이 있는 일은 할 수 있습니다.
function multiReturnValues(){
return {x:10,y:20};
}
그러면 메서드를 호출할 때
const {x,y} = multiReturnValues();
console.log(x) ---> 10
console.log(y) ---> 20
템플릿 리터럴 "${}"을 사용하여 값과 변수가 많은 문자열을 반환할 수 있습니다.
예를 들어 다음과 같습니다.
var newCodes = function() {
var dCodes = fg.codecsCodes.rs;
var dCodes2 = fg.codecsCodes2.rs;
return `${dCodes}, ${dCodes2}`;
};
그것은 짧고 간단하다.
언급URL : https://stackoverflow.com/questions/2917175/return-multiple-values-in-javascript
'programing' 카테고리의 다른 글
MARIADB - Python 접속 문제 (0) | 2023.01.31 |
---|---|
어레이 상에서 반복하지 않고 정의된 횟수만큼 ng-repeat하는 방법 (0) | 2023.01.31 |
Google Maps & JavaFX : JavaFX 버튼 클릭 후 지도에 마커를 표시 (0) | 2023.01.31 |
Handlebars.js 각 루프 범위 밖의 변수에 액세스합니다. (0) | 2023.01.31 |
Java 8: Java.util.function의 TriFunction(및 kin)은 어디에 있습니까?아니면 대체방법이 뭐죠? (0) | 2023.01.31 |