함수
입력 -- 처리 -- 출력
처리
함수 : 특정한 일을 수행하는 코드의 집합
함수를 정의한다.
function add(a + b){
return a + b;
}
function - 함수 정의 키워드
add 함수 이름
a, b 매개변수, 인자
return a + b 결과값 반환
함수 단위를 작은 단위의 일들을 묶어야 겠군
수행하는 일을 잘 나타낼수있는 이름 짓기
매개변수이름도 의미있게 지어야 하겠군
함수도 객체이다.
함수는 heap 안에 저장된다. 그래서 add 메모리에는 메모리 주소가 담긴다.
함수의 이름은 함수를 참조하고 있다!!!!!!!!!!!!!!!!!! 함수의 주소를 가지고 있다!!!!!!!!!!!!!!!!!!!!
2. 함수와 메모리
return을 함수 중간에 하게 되면 함수가 종료됨
사용 예: 조건이 맞지 않는 경우 함수 도입부분에서 함수를 일찍이 종료함 !!
// 매개변수의 가본값은 무조건 undefined
// 매개변수의 정보는 함수 내부에서 접근이 가능한 arguments 객체에 저장됨
// 매개변수 가본값 Default Parameters a = 1, b =1
// 기본값 설정해도 매개변수 값이 정해지면 기본값 무시됨
// Rest 매개변수 Rest Parameters
몇개의 매개변수인지 정해지지 않은경우
function sum(...numbers){
console.log(numbers);
}
sum(1,2,3,,4,4,4,4,4,56,6,6,5,5,5,) 무수하게 나오면
numbers 는 배열로 출력이 된다.
3. 함수 표현식
// 함수 선언문 function name(){ }
// 함수 표현식 const name = function() { } // 여기에 function에 이름 정의 안함!!!!
// 화살표 함수 const name = () => { }
const add = (a,b) => {
return a + b ;
};
// 생성자 함수 // 뒤 객체편에서 다룸
IIFE ( Immediately-Invoked Function Expressions)
즉각적으로 함수를 표현하는것 ... 이건 잘 사용안함 많이 사용되는 함수 방법은 잘 사용안함
드이어 콜백함수
내가 나중에 함수해줄게~!
일급 객체
일반객체처럼 모든 연산이 가능한 것
- 함수의 매개변수로 전달
- 함수의 반환값
-할당 명령문
- 동일 비교 대상
일급 함수
함수가 일반 객체처럼 모든 연산이 가능한것
- 함수의 매개변수로 전달
- 함수의 반환값
-할당 명령문
- 동일 비교 대상
자바 버전 8, 코틀린, 파이썬, 자바스크립트
고차함수
- 인자로 함수를 받거나(콜백함수)
-함수를 반환하는 함수를 고차함수
action이 콜백함수인데 바로 작동하는게 아니라, 어떤 함수가 오는지 모른다.
밑에 호출을 하고 나서 아래 정의된 함수가 같이 온다.
![](https://blog.kakaocdn.net/dn/T5z2P/btrSvAOwB8N/gRn2U1jYuSnNrZ68q2qEO0/img.png)
함수를 정의해서 사용하거나
화살표 함수를 이용해서 바로 이용이 가능하다
아니면 setTimeout 고차함수 사용해도 이용가능하다.
--------------------------
코딩할 때 중요한 컨셉
Immutability 불변성
불변성을 유지하는게 좋다
mutable 변경할 수 있는
Immutable 변경할 수 없는
불변성과 함수 인자의 관계
원시 값은 값을 의해 값자체로 전달이 된다.
함수 내부에서 외부로부터 주어진 인자의 값을 변경하는 것은 정말 안좋다.
내부에서 변경하는것 안좋다.
상태 변경이 필요한 경우에는, 새로운 상태를 (오브젝트, 값) 만들어서 반환해야함
원시 값 - 값에 의한 복사
객체값 - 참조에 의한 복사(메모리주소)
참조하는 오브젝트를 하면 참조 주소를 가져온다.
함수 내부에서 외부의 것을 변경하면 정말 잘못됐다!!!!!!!!!!
외부로 부터 주어진 인자(오브젝트)를 내부에서 변경하면 안된다.
함수 내부에서 무언가를 바꾼다면
// 이름부터 변경하는 느낌을 주도록
// 반환할떄는 새로운 오브젝트 만들기!!!!
'코딩 > 자바스크립트 JS 드림코딩' 카테고리의 다른 글
JS 클래스 세터와 게터 (0) | 2022.11.30 |
---|---|
자바스크립트 JS 클래스 (0) | 2022.11.30 |
자바스크립트 JS 반복문 (0) | 2022.11.30 |
JS 제어문 11월 29일 퇴근하고 작성하기!!! (0) | 2022.11.29 |
자바스크립트 JS 연산자 (0) | 2022.11.29 |