변수값 교환
ES6의 구조 분해 문법(Desctructuring)은 객체의 프로퍼티나 배열의 요소를 변수로 쉽게 추출할 수 있게 해주는 문법입니다. 이 문법을 활용하면 두 개 이상의 변수의 값을 간단하게 교환할 수 있습니다.
구조 분해 없이 변수의 값을 교환할 때에는 주로 아래와 같이 구현합니다.
let str1 = "One";
let str2 = "Two";
console.log(str1, str2); // One Two
let temp = null;
temp = str1;
str1 = str2;
str2 = temp;
console.log(str1, str2); // Two One
temp라는 새로운 변수를 활용해서 한쪽의 값을 임시로 저장한 후, 각 변수에 차례대로 값을 초기화해 주는 방식입니다.
아래 코드와 같이 temp 없이 바로 교환해 버리면 한쪽값이 유실되기 때문에 반드시 temp라는 새로운 변수가 필요합니다.
let str1 = "One";
let str2 = "Two";
console.log(str1, str2); // One Two
str1 = str2;
str2 = str1;
console.log(str1, str2); // Two Two
Destructing assignment
구조분해 할당(Destructing assignment) 문법을 활용하면 새로운 변수 없이, 더 깔끔하게 구현할 수 있습니다.
let str1 = "One";
let str2 = "Two";
console.log(str1, str2); // One Two
[str1, str2] = [str2, str1]
console.log(str1, str2); // Two One
위 구조 분해 문법의 기능을 표현해 보면 아래와 같습니다.
str1 = [str2, str1][0];
str2 = [str2, str1][1];
단, 차례대로 str1에 값이 할당된 후 str2에 할당되는 것이 아니라 str1과 str2에 값이 동시에 할당됩니다.
같은 방식으로 3개 이상의 변수의 교환도 깔끔하게 구현할 수 있습니다.
let str1 = "One";
let str2 = "Two";
let str3 = "Three";
console.log(str1, str2, str3); // One Two Three
[str1, str2, str3] = [str2, str3, str1];
console.log(str1, str2, str3); // Two Three One
'자바스크립트' 카테고리의 다른 글
[JAVASCRIPT] 캐싱 함수 만들기 / 데코레이터(decorator) (1) | 2021.08.30 |
---|---|
[JAVASCRIPT] 중첩 객체에서 특정 프로퍼티의 합 구하기, 재귀함수 활용 (0) | 2021.08.19 |
[JAVASCRIPT] 정규식(regExp) - 한글 영어 숫자만 입력받기 (3) | 2020.12.23 |
[JAVASCRIPT] 배열 내의 요소 무작위로 섞기(shuffle) (0) | 2019.11.02 |
[JAVASCRIPT] 배열 필터링하는 방법(걸러내기) - filter (0) | 2019.08.10 |