함수를 매개변수로 넣을 때 주의할 점
func란 변수에 어떤 함수가 할당돼있다고 할 때, 이 변수를 인자에 넣을 때 func로 넣는 것, func()로 넣는 것, func(인자O)로 넣는 것의 결과가 모두 다르다!! 아래 예시를 보자구
// x와 y를 인자로 받는 함수가 상수 add에 할당돼있음
const add = function(x, y) {
return x + y;
}
// argu를 인자로 받는 함수가 what_return에 할당돼있음
const what_return = function(argu) {
let return_val = `${argu}`;
console.log(return_val);
}
1) 매개변수에 func로 넣는 경우 : "소괄호가 붙지 않았음 = 함수가 실행되지 않음"이므로 함수 자체가 반환됨
/* add로 넣은 경우 */
what_return(add); // 반환 : "function (x, y) { return x + y }"
2) 매개변수에 func()로 넣는 경우 : 함수가 실행은 되니 그 결과가 출력되는데, undefined 둘의 합인지라 NaN이 반환됨
/* add()로 넣은 경우 */
what_return(add()); // 반환 : "NaN"
3) 매개변수에 func(인자O)로 넣는 경우 : 함수가 실행도 됐고 인자도 잘 받아 정상 작동해 그 결과인 5가 반환됨
/* add(인자O)로 넣은 경우 */
what_return(add(2, 3)); // 반환 : "5"
간단 prototype
- 생성자의 원형 객체에 접근할 수 있도록 해주는 속성!!
- prototype을 활용한 코드의 결과는 그 원형 객체의 상속 객체 전부에 영향을 미침!!
- Object.prototype하면 그 파일 내 모든 객체의 속성을 건드릴 수 있고, Array.prototype하면 모든 배열에 접근 가능!!
call과 apply의 생성자함수에서의 활용
동물이란 객체를 반환하는 생성자함수가 있고, 각각 개와 고양이 객체를 반환하는 두 생성자함수가 있다고 하자. 이때 전자를 상위 생성자라 하고, 후자 둘을 하위 생성자라 하자구.
하위 생성자들은 상위 생성자의 특성을 공유하고 있을 것임. 얘를 들면 뭐 포유류라든가, 척추를 가진다든가. 이런 상황에서 하위 생성자들을 설정할 때, 하나하나 특성을 매번 써주지 않고 상위 생성자에서 공유하는 특성을 그대로 가져와 활용할 수 있다!
function Pet (isFly, isWalk) {
this.isFly = false;
this.isWalk = true;
}
function Dog (isFly, isWalk) {
Pet.call(this, isFly, isWalk);
this.isBark = true;
}
function Cat (isFly, isWalk) {
Pet.call(this, isFly, isWalk);
this.isMeow = true;
}
call을 활용해 상위 생성자의 this를 바인딩해줌으로써 하위 생성자들에게 쉽게 속성을 공유해줄 수 있었다! apply도 마찬가지 방법으로 활용해줄 수 있음
유사배열객체의 조건
- length 속성이 반드시 필요. 없으면 유사 배열 아님
- index가 존재!!
제곱을 구하는 방식
Math.pow(a, b) // a의 b제곱 출력
a**b // 마찬가지로 a의 b제곱 출력
기억할 내용
- round는 반올림, ceil은 올림, floor는 버림
- 매개변수에 값이 입력되지 않았을 경우 그 매개변수는 undefined
- 협업시 웬만하면 const를 우선 사용! 누군가가 실수로 재선언이나 재할당하는 불상사를 막기 위해!
굳이 값이 변해야하는 경우에만 let - while문 무한루프에 주의. 조건과 증감식 잘 확인! 무한루프에 빠진 프로그램 증상이 보통 응답을 못 함
- AS-IS = 기존 꺼 / TO-BE = 이후 꺼