return
문으로 반환할 값을 지정해주어야 한다.new
키워드로 호출하는 생성자의 경우에는 함수가 가르키는this
그 외의 모든 함수는 undefined
function
키워드로 시작function
키워드 뒤에 함수의 이름과 매개변수를 ()
내부에 선언한다 function regularFunc(a, b) { // a, b ==> parameter (매개변수)
const c = a + b
return c
}
regularFunc(1, 10) // 1, 10 ==> argument (전달인자)
function
키워드를 삭제하고 인자를 받는 매개변수의 ()
와 {}
사이에 화살표=>
를 넣어준다 const arrowFunc = (a,b) => {
const c = a + b
return c
}
arrowFunc(1, 10)
return
을 생략할 수 있다()
const func = () => 'string' // 반환값만 존재하기 때문에 중괄호와 `return` 생략
const func2 = a => 'string' // 매개변수가 하나이기 때문에 괄호 생략
const func3 = () => ({key: 'value', key2: 1000}) // 객체의 경우 괄호로 감싸주어야함
new
키워드를 이용한 생성자를 사용할 수 없다prototype
프로퍼티가 존재하지 않는다const test = {
name: '이름',
func: function() {
return this.name // 일반 함수는 메소드를 소유하고 있는 객체를 가리키기 때문에 '이름'이라는 문자열을 가지고 있음
}
}
console.log(test.func()) // => '이름' 출력
const test = {
name: '이름',
func: () => {
return this.name // 상위 스코프를 바라보고 있기 때문에 '이름'을 가리키지 않음
}
}
console.log(test.func()) // test2의 상위인 전역객체를 바라보고 있기 때문에 undefined를 출력
참고