알고리즘 특강
자바스크립트 문법 강의 수강
this, 바인딩
📍 https://velog.io/@jetiiin/this-바인딩
📍 https://velog.io/@jetiiin/명시적-바인딩-call-apply-bind
강의에서 잠깐 Math.max.apply()
라는 코드가 나왔는데 왜 쓰는지 이해가 안됐다 @_@
ES6의 스프레드 문법이 없던 시절 썼던 문법이라고 하는데
this 바인딩 때문에 생겨난 메소드를 this 바인딩이 필요 없는 곳에서 왜 써야하는지
(배열을 넘겨주기 위해서인가?)
솔직히 100% 이해 안됐지만.. 일단 넘어가기로..
(참고 코드에서도 왜 array 넘겨주는지 잘 모르겠음 ㅠㅠ)
// 전역변수에 배열을 넣어 Math.max 함수를 쓰면 NaN가 나온다
var arr = [1,3,5,7,9]
Math.max(arr) // NaN
// 이를 해결하기 위해 apply를 사용 (ES6 이전)
// arr 변수 대신 배열을 바로 넣어도 됨 => apply는 배열'만' 보낼 수 있음
Math.max.apply(null, arr);
💡 null을 사용한 이유?
1. apply 메소드의 첫 번째 파라미터로는 Math.max()함수 내부에서 사용할 this 객체를 전달해야 하는데, 여기서는 따로 this 객체를 사용하지 않으므로(=필요 없으므로) null 전달
2. Math.max() 함수로 전달할 파라미터를 배열 형태로 전달 (=...arr과 동일한 효과)
💡 apply 참고코드 : 배열에 배열을 붙이기 위해 apply 사용하기
💥 push, concat 사용 시 불편함
✅ 해결
var array = ["a", "b"];
var elements = [0, 1, 2];
array.push.apply(array, elements);
console.info(array); // ["a", "b", 0, 1, 2]
- 알고리즘 이거.. 특강 들어보니 더 막막한데..
공부한다고 될 일인가 ㅠㅠㅠㅠ- 강의 후반부로 갈수록 개념들이 더 어렵다
내일이면 내가 오랫동안 이해 못했던 promise 파트가 나오는데..
부디 조금이라도 이해할 수 있기를 🥺..
참고 : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/apply