JavaScript Spread Operator 2016-11-15 JavaScript 참조 전개 연산자 - MDN Iteration protocols - MDN 용도Point 함수 호출 용 / 배열 리터럴 용 / 비구조화용 더 나은 apply 더 강력한 배열 리터럴 구문12345678// 함수 호출 용myFunction(...iterableObj);// 배열 리터럴 용[...iterableObj, 4, 5, 6];// 비구조화(destructuring) 용[a, b, ...iterableObj] = [1, 2, 3, 4, 5]; 더 나은 apply12345678910111213141516function myFunction(x, y, z) { }var args = [0, 1, 2];myFunction.apply(null, args);// 이는 다음과 같다.function myFunction(x, y, z) { }var args = [0, 1, 2];myFunction(...args);// 이런 식의 사용도 가능하다.function myFunction(v, w, x, y, z) { }var args = [0, 1];myFunction(-1, ...args, 2, ...[3]); 더 강력한 배열 리터럴1234var parts = ['shoulders', 'knees'];var lyrics = ['head', ...parts, 'and', 'toes']; // ["head", "shoulders", "knees", "and", "toes"] new에 적용123var dateFields = readDateFields(database);var d = new Date(...dateFields); 더 나은 push12345678910var arr1 = [0, 1, 2];var arr2 = [3, 4, 5];// arr1에 arr2의 모든 항목을 덧붙임Array.prototype.push.apply(arr1, arr2);// 이는 다음과 같이 치환될 수 있음.var arr1 = [0, 1, 2];var arr2 = [3, 4, 5];arr1.push(...arr2); iterable에만 적용12345678var obj = {"key1":"value1"};function myFunction(x) { console.log(x); // undefined}myFunction(...obj);var args = [...obj];console.log(args, args.length) //[] 0