: 하나의 함수는, 하나의 return문만 갖을 수 있다.
: return이 없다면 undifined를 반환한다.
/* 예제1 */
function name(num){
return num;
};
name(2) // 2
/* 예제2 - return이 없다면? */
function name(num){
console.log("abc");
};
name(2) // undifined
function introduce(name = '홍길동', birth = 1999) {
console.log(`${name}`);
console.log(`${birth}`);
}
introduce('Tom'); // Tom, 1999
introduce('Joy', null); // joy, null
introduce(undefined, 2000); // 홍길동, 2000
: 표현식이 아닌 문은 변수에 할당할 수 없다.
function name () {
return x
}
: 함수를 변수에 할당하여 함수를 값처럼 사용할 수 있는 함수 정의 방식.
// 예제1)
const add = function(x,y){
return x + y;
}
console.log(add(2,5)) // 7 ← 이제 "add = 7" 인 꼴이 됨!
// 예제2)
btnEl.addEventListener("click", function(){ //<-함수선언을 값처럼 활용하고 있음
consolg.log("kk"); // 따라서 이거도 "함수표현식"임
});
(※ 스코프 : 함수.변수 단위로 만들어짐)
test1(); //aa출력, (호이스팅 가능ㅇ)
function test1(){
console.log("aa");
}
test2(); //error남,호이스팅 불가능
const test2 = function(){
console.log("bb)
}
(num1,num2) => {
return num1 + num2;
}
: 화살표 함수를 호출하기 위해서 변수에 함수를 할당하여 사용함.
const sum = (num1,num2) => {
return num1 + num2;
}
1) 매개변수가 하나면 소괄호 생략하능
: 메소드도 함수여서 return을 이용해 매개변수로 반환을 해야함.
num => {return num * 2};
(num) => {return num * 2};
2) 하나의 문으로 구성되있고, 별도의 연산없이 바로 리턴하려면
: "return/중괄호" 생략가능,
num => num * 2
3) 객체 자체를 반환할 경우
: 소괄호 넣어줘야 함.
num => ({num * 2});
1)arguments 객체가 없음.
let test1 = ()=>{console.log(arguments)} //에러남
test1(1,2,3,4,5);
2)화살표함수 내부의 this는 메서드를 호출할 때 호출한 객체를 가르키지 않고,
상위 스코프의 this를 가르키게됨.
(참조 - this , new생성자함수★★★★★)
function name1(arr){
let result = arr.map(ele => ele*2);
//리턴을 이용해서 값을 map메소드로 반환한다.
return result;
}
console.log(name1([1,2,3,4,5]));
(익명함수)();
(function (x, y) {
consoel.log(x + y);
})(3, 5);
(function sayHi() {
console.log('Hi!');
})();
sayHi(); // ReferenceError
.