오늘 배운 것
- spread operator: function 함수이름 (...매개변수)를 통해, 요소의 나열만으로 함수 내에서 arry로 받아올 수 있음
function findMin(...arr) {
console.log(arr); // [ 100, 40, 6, 2, 90, 180 ]
let output = arr[0];
for (const item of arr) {
if (output > item) {
output = item;
}
}
return console.log(output); // 2
}
findMin(100, 40, 6, 2, 90, 180);
// 아래는 앞의 숫자는 각각의 개별 매개변수로 받아오고, 나머지를 배열로 받아 옴
function findMin(a, b, ...arr) {
console.log(a, b, arr); // 100 40 [ 6, 2, 90, 180 ]
let output = arr[0];
for (const item of arr) {
if (output > item) {
output = item;
}
}
return console.log(output); // 2
}
findMin(100, 40, 6, 2, 90, 180);
// spread operator를 이용해서 배열을 배열 / 숫자로 받는 법
function findMin(...arr) {
console.log(arr);
}
const array = [100, 40, 6, 2, 90, 180];
findMin(array); // [ [ 100, 40, 6, 2, 90, 180 ] ] -> 배열 안에 배열로 들어옴
findMin(...array); // [ 100, 40, 6, 2, 90, 180 ] -> 배열 안에 숫자로 들어옴
- 기본 매개변수
- 매개변수가 항상 같을 때, 매개변수에 기본 값을 지정할 수 있음
- 단, 첫번째 매개변수에는 기본값을 지정할 수 없음
- 기본 매개변수를 함수에서 지정했더라도, 함수를 사용할 때, 해당 매개변수에 다른 값을 줄 수 있음
function name(a, b=기본값, c=기본값)
// 오늘 공부한 quick sort에서도 이와 같은 기본 매개변수를 이용함
function pivot(arr, start = 0, end = arr.length - 1) {
const swap = (arr, idx1, idx2) => {
[arr[idx1], arr[idx2]] = [arr[idx2], arr[idx1]];
};
// We are assuming the pivot is always the first element
let pivot = arr[start];
let swapIdx = start;
for (let i = start + 1; i <= end; i++) {
if (pivot > arr[i]) {
swapIdx++;
swap(arr, swapIdx, i);
}
}
// Swap the pivot from the start the swapPoint
swap(arr, start, swapIdx);
return swapIdx;
}
function quickSort(arr, left = 0, right = arr.length - 1) {
if (left < right) {
let pivotIndex = pivot(arr, left, right); //3
//left
quickSort(arr, left, pivotIndex - 1);
//right
quickSort(arr, pivotIndex + 1, right);
}
return console.log(arr);
}
quickSort([100, -3, 2, 4, 6, 9, 1, 2, 5, 3, 23]);
- arguments : 구 버전의 자바스크립트에서 함수 내부에서 사용할 수 있었던 매개변수 매개변수와 관련된 여러 정보를 확인할 수 있고 배열과 비슷하게 사용할 수 있으나 (callee: f와 Symbol(Symbol.iterator):f 값을 가짐) , 배열이 아니므로, 일반적인 배열과 같이 사용하면 여러 위험을 내포하고 있음
- spread operator가 없던 구버전에서는 apply() 함수를 사용하였음
- 구버전에서는 기본 매개변수를 아래와 같이 작성하였음
function earnings(wage, hours) {
wage = typeof(wage) != undefined ? wage : 8590
hours = typeof(hours) != undefined ? hours : 52
return wage * hours
}
// 매개변수로 들어오는 값이 false (0, 빈 문자열 등 false로 반환되는 값 포함) 아닌 것이 확실하다면 아래와 같이 표현
function earnings(wage, hours) {
wage = wage || 5890
hours = hours || 52
return wage * hours
}
- 함수 표현식과 선언식
- 선언식 : function 함수명 () {함수 내용} =>의 형태로 문서를 실행하면 호이스팅 됨
- 표현식 : let 함수명 = function () {함수 내용} => 의 형태로 호이스팅의 영향을 받지 않음
함수 표현식 vs 함수 선언식
(기본) 자바스크립트 함수 표현식과 함수 선언식에는 어떠한 차이점이 있는지 알아봅니다.
joshua1988.github.io
'항해99_10기 > 105일의 TIL & WIL' 카테고리의 다른 글
[20221112] 콜백함수를 활용한 Array 내장 함수들 : forEach(), map(), filter() (0) | 2022.11.12 |
---|---|
[20221111] sourcetree branch 삭제할 때 에러 (0) | 2022.11.11 |
[20221110] recursion으로 merge sort 구현 (0) | 2022.11.10 |
[20221110] 배열, for문 조건 속 논리 연산자 (0) | 2022.11.10 |
[20221109] 숫자와 문자의 혼합형이 string 타입으로 저장되어 있을 때 숫자만 number로 변환하는 방법 (2) | 2022.11.09 |