-
모던 자바스크립트 Deep Dive - 함수JavaScript 2021. 9. 16. 19:00
keyword : [ 함수 , 식별자 , 함수 선언문, 함수 표현식 , 순수함수 , 부수 효과, 함수형 프로그래밍 ]
함수 : 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의 한 객체
함수 정의
// 함수 선언문 function add( x , y ){ return x + y ; } // 함수 리터럴 let f = function add( x , y ){ return x + y ; }; // Function 생성자 함수 let add = new Function('x','y','return x + y'); // 화살표 함수 let add = ( x , y ) => x + y ;
함수 선언문
함수 선언문은 표현식이 아닌 문이다.
function ( x , y ){ return x + y ; }
표현식이 아닌 문은 변수에 할당 할 수 없다.
let add = function add( x , y ){ return x + y; }
add 변수에 함수를 할당한게 아닌가??
=> 자바스크립트 엔진이
=> 함수 리터럴을
=> 함수 선언문(표현식이 아닌 문)과 함수 리터럴 표현식(표현식인 문) 중 둘 다 해석 될 수 있다.함수 몸체 외부에서 함수 이름으로 함수를 호출 할 수 없다. 즉, 식별자가 존재 하지 않는다.
=> 자바스크립트 엔진은 함수 선언문을 해석해 함수 객체를 생성한다.
=> 함수 이름과 동일한 이름의 식별자를 암묵적으로 생성한다.함수는 함수 이름으로 호출하는 것이 아니라 함수 객체를 가리키는 식별자로 호출 한다.
함수 표현식
함수는 일급 객체이다 = 함수를 값처럼 자유롭게 사용할 수 있다
let add = function ( x , y ){ return x + y ; }
함수 생성 시점 과 호이스팅
console.log(add(2,5)); // 7 console.log(sub(2,5)); // TypeError console.log(sub); // undefined function add( x , y ){ return x + y; } let sub = function( x , y ){ return x - y; }
함수 선언문 : 함수 호이스팅
함수 표현식 : 변수 호이스팅
순수 함수와 비 순수 함수
순수 함수 : 부수 효과가 없는 함수 , 동일한 input => 동일한 output
비 순수 함수 : 부수 효과가 있는 함수
부수 효과 : 함수 내부에서 변경하면 함수 외부의 객체가 변경되는 것함수형 프로그래밍 : 순수 함수와 보조 함수의 조합으로 불변성을 지향하는 프로그래밍 패러다임
'JavaScript' 카테고리의 다른 글
모던 자바스크립트 Deep Dive - 전역 변수의 문제점 (0) 2021.09.16 모던 자바스크립트 Deep Dive - 스코프 (0) 2021.09.16 모던 자바스크립트 Deep Dive - 원시 값과 객체의 비교 (0) 2021.09.16 모던 자바스크립트 Deep Dive - 객체 리터럴 (0) 2021.09.16 모던 자바스크립트 Deep Dive - 타입 변환과 단축 평가 (0) 2021.09.16