function scope
function helpMe() {
let msg = 'asdfasdf'; 내부 변수
}
msg // 오류남
왜냐하면 저 함수 안에서만 사용되는 함수이기 때문에
만약에 저걸 쓰고싶으면
let msg = 0;
function helpMe() {
msg = 'asdfasdf';
}
helpMe()
msg 하면 기존의 변수를 업데이트 되는 개념인데 잘 안씀
function 안의 msg를 let으로 다시 재설정하게 되면 msg는 그대로 0으로 나옴
*이 변수가 그 함수에 한정되었기 때문
함수 안에서 console.log 찍어보면 함수안에서 설정한 변수로 나옴
변수가 중복으로 설정되어있으면 함수 내에서는 가까운 변수를 이용함
변수가 블록 안에서 설정되면 변수들은 그 블록 안에서만 존재
블록은 보통 { } 안을 의미함
let radius = 8;
if(radius > 8) {
let A = 2
let ...... }
해놓으면 radius =8 만 반영되고 { } 안에있는건 undefined
만약에 var를 쓰면 반영됨 - 그래서 안쓰는거
함수랑 비슷한 의미로 생각하면 될듯
렉시컬 범위
함수를 중첩했을 때 자식 함수는 부모 함수의 변수같은거에 엑세스 가능
but 역방향으로는 안됨
함수 표현식(function expression)
const add = function (x, y) {return x+y} 사용할땐 똑같이 add(3,4) 이런식으로
변수에 함수를 넣어버리는 느낌
이름 없는 함수를 변수에 넣어버림
*함수를 그냥 값으로 표현함
highest order function
함수를 인수로 받는 함수 - 함수 두개 만들어서 매개변수 자리에 함수 넣는거
팩토리 함수
함수안에 함수를 만들어놓음
함수 한개를 변수로 지정해서 계속 써먹을 수 있음
ex) function makeBetweenFunc(min,max) {
return function(age) {
return age>=min && age <= max } - 이렇게 하면 true/false로 변환해줌
}
const toCheckAdult = makeBetweenFunc(19,64)
해놓으면 toCheckAdult는 둘째줄~셋째줄 함수가 되는거임
toCheckAdult(32) 하면 age에 32가 들어가서 true/false값을 대신 찾아줌
팩토리 함수 만들어서 체크하고 싶은 나이만 지정해서 변수로 만들어주면 일일이 함수 두세줄씩 안만들어도 됨(근데 개어려운듯)
'JS' 카테고리의 다른 글
1-if문을 이용해서 토글 안쓰고 토글 구현하기 (0) | 2022.09.11 |
---|---|
method (0) | 2022.09.08 |
function 1 (0) | 2022.09.07 |
while for문 헷갈리는거 정리 (0) | 2022.09.06 |
JS while문 (0) | 2022.09.05 |