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();
Make브라우저 호환성에 대해 이 표를 참조하십시오.기본적으로, IE이외 모든 현대 브라우저 지원 이 구문지만, 당신 IE-compatible 자바 스크립트에 바벨과 같은 툴들을 짓시간에 ES6 코드를 컴파일할 수 있다.
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에서 이미 시험해 볼 수 있습니다!