함수 > 특정 동작(기능)을 수행하는 일부 코드의 집합(부분)
function
한번만 사용하는 게 아닌 여러번 반복하기 위해서 이런 함수를 사용한다.
이런 함수는 재사용이 가능하다.
자바스크립트
여러번 사용하고 싶다 > 함수는 어떤 코드를 재사용
정의:
선언:
function 함수이름() {
실행할 문장 넣기
}
다 만들어놓은 함수를 호출해야한다.
함수 선언하는 위치는 상단, 하단 상관없이 스크립트가 해석이 될 때 먼저 분석되는 부분이다.
자료는 매개변수
함수를 만드는 중
결과를 리턴값이라 생각함
스코프(scope)... 범위
ㄴ 변수를 선언하고 변수가 사용되는 범위
ㄴ변수의 사용 범위를 정확하게 알 수 있음
ㄴ Scope를 우리말로 번역하면 '범위'라는 뜻을 가지고 있습니다. 즉, 스코프(Scope)란 '변수에 접근할 수 있는 범위'라고 할 수 있는데요. 자바스크립트에선 스코프는 2가지 타입이 있습니다. 바로 global(전역)과 local(지역)
(출처: https://medium.com/@su_bak/javascript-%EC%8A%A4%EC%BD%94%ED%94%84-scope-%EB%9E%80-bc761cba1023)
ㄴ한 함수에서 사용할 수 있는 변수: 지역변수(local)
ㄴ 스크립트 전체에서 사용할 수 있는 변수: 전역 변수 (global)
ㄴ 중괄호(블록스코프), 함수)
함수 스코프(function-scoped)
자바스크립트에서 함수를 선언하면 함수를 선언할 때마다 새로운 스코프를 생성하게 됩니다. 그러므로 함수 몸체에 선언한 변수는 해당 함수 몸체 안에서만 접근할 수 있다.
지역 스코프(Local Scope)는 해당 지역에서만 접근할 수 있어 지역을 벗어난 곳에선 접근할 수 없다는 의미입니다.
호이스팅: 끌어올린다.
변수를 선언하고 할당을 분리해서 하는 경우
(https://mozzi-devlog.tistory.com/7)
JavaScript로 개발을 진행하다 보면 호이스팅이라는 말을 들어본 경험이 있을 것이다.
보통은 호이스팅이라 하면 코드가 실행되기 전에 함수, 변수의 선언을 맨 위로 끌어올린다고 설명한다.
하지만 실제로 끌어올리는 것은 아니다.
호이스팅이란 코드가 실행되기 전에 변수 및 함수에 대한 메모리를 설정하는 것이다.
> hoist(2) > 2+1 = 3 이 되어서 호출 됨
> var 호출에서는 선언 전 접근하여 메모리에 초기에 저장된 undefined가 출력된다.(ver는 잘 사용되지 않지만 유효 범위는 함수 scope라고 보면 됨) (함수스코프, 재선언, 재할당 가능)
> const와 네 번째 let의 경우에는 변수가 초기화되지 않아 Reference Error가 발생한다.*참조오류( let랑 const는 블록 영역의 범위를 가진다. block안에서 중괄호로 된 거에서만 사용되거나 함수 내에서만 사용됨)
gpt 지식 얻기
var | 함수스코프, 재선언, 재할당 가능 // 오래된 방식으로 변수를 선언하며, 호이스팅과 중복 선언 문제가 있습니다. 사용을 피하는 것이 좋습니다. |
let | 블록스코프/함수스코프, 재선언 불가능, 재할당 가능 // 블록 스코프를 갖고, 재할당이 가능한 변수를 선언할 때 사용됩니다. |
const | 블록스코프/함수스코프, 재선언, 재할당 불가능 // 블록 스코프를 갖고, 재할당이 불가능한(상수) 변수를 선언할 때 사용됩니다. 그러나 객체나 배열 내부의 속성은 수정할 수 있습니다. |
함수 안에 let을 선언해서
출력 > 55이 나옴
출력하기전에 sum=100;을 재할당하였더니
출력은 그냥 100으로 나온다.
그러므로 재할당할 경우를 순서 잘잡고 해야한다.
> 위의 코드에서 x 변수가 호이스팅되지만, 변수를 선언하기 전에 x를 출력하려고 하면 ReferenceError가 발생합니다.
y 변수는 if 블록 내에서 선언되었으므로 블록 외부에서는 접근할 수 없습니다. 이것이 let의 블록 스코프 특성 때문에 발생하는 것입니다.
따라서
블록안에 출력하기전에 선언을 하여서 실행해야 오류가 나지 않는다.
var 변수는 함수의 시작 부분에서 선언을 해주기 (호이스팅이 생긴다.)
교재 236페이지 > 선언된 함수 재사용 해가지고 선언된 함수는 유효한 범위내에서 얼마든지 재사용할 수 있다는 것을 확인.
'프론트엔드 > JavaScript' 카테고리의 다른 글
a부터 b까지 값을 구해보기 (0) | 2023.11.06 |
---|---|
매개변수, 인수, 익명함수, 기명함수, 자기호출함수, 화살표함수 (0) | 2023.11.06 |
실습(태어난 해 입력하기) (0) | 2023.11.01 |
실습(점수 입력받기) (0) | 2023.11.01 |
실습(if로 통해 짝수 홀수 및 숫자 입력) (0) | 2023.11.01 |