function hello1(){
console.log('hello1');
}
function hellow(name){
console.log('hello2',name);
}
function hello3(name) {
return `hello ${name}`;
}
const hellow1 = function( ) {
console.log('hello1')
}
const hello2 = function(name){
console.log('hello2' ,name);
}
const hello3 = function(name) {
return `hellow ${ name } `
}
선언적 방식으로 선언하게 되면 호이스팅되어 사용이 된다.
익명함수의 경우 var로 선언하게 되면 오류 발생 - 호이스팅과 동시에 오류가 발생한다
익명함수 const로 선언하게 되면 호이스팅의 문제 발생하지 않는다
const hello = new Function () ;
const sum = new Function ( 'a' , 'b', 'c', ' return a+b+C ');
console.log( sum(1,2,3));
// 6이 출력
//마지막에는 함수의 바디값을 문자로 넣는다
global a= 0;
{
const a = 1;
const test = new Function ( 'return a `);
console.log(test());
}
// a =0 출력 . {} 안의 상위 scope에 접근이 불가하다
//전역 변수로 설정을 해준 값만 인식하게 된다
{
const a =2 ;
const test = functino (){
return a;
};
console.log(test());
}
// a = 2 출력
const hello1 =() => {
console.log(`hello`);
}
//항상 익명함수로 사용해야한다
//선언적 방식은 불가
//매개변수가 한개일때 , 괄후를 생략 가능하다
const hello2 = name => {
console.log (name)
};
const hello3 =(name,age)=>{
console.log(name,age)
};
//함수의 리턴 , 함수를 실행하면 얻어지는 값
const hello4 = name =>{
return `hello4 ${name}`;
};
// { } 괄호 생략 가능
const hello5 = name => `hello5 ${name}`;
function Person (name, age) {
this.name = name;
this.age = age;
}
const p = new Person ('mark',37);
console.log( p, p.name, p.age);
// {name:'mark', age: 37} , 'mark', 37 출력
const a = new Person ('anna',26);
console.log(a,a.name,a.age);
// {name:'anna', age: 26} , 'anna', 26 출력
const Cat = (name, age)=>{
this.name =name;
this.age= age;
}
const c = new Cat('냥이',1);
// arrow funtion 에서는 this라는것이 생성되지 않는다
// 에러를 발생시킨다.
function plus(base){
return function(num){
return base+num;
}
}
const plus5= plus(5);
console.log(plus5(10));
//15값이 출력
function hello(c) {
console.log('hello');
c();
}
hello(function (){
console.log('콜백');
});
//hello, 콜백 출력
// hello를 호출하고 나면 console.log('hello') 먼저 출력
// c() 함수 호출 console.log('콜백')출력