03 . 함수와 실행 컨텍스트
함수 선언 방법
var fl = new Function("x","y","return x+y"); // 잘안쓴다.
//선언적 함수방식
function f2(x,y){ // 매개변수 타입 선언안함
return x-y;
}
//리터럴 선언방식
var f3 = function(x,y){
return x-y;
}
함수의 정의
호이스팅
console.log(message("홍길동"));
var message = "안녕";
console.log(message);
function message(name){
return "hello"+name;
}
Global (message : "안녕")
실행하기 전에 만들어지는 함수를 호이스팅이라고 한다.
console.log(v1);
var v1 = 100;
console.log(v1);
var v1 = "hello";
console.log(v1);
function 먼저 찾음 --> var 찾음 (v1-> undefined) --> 실행 -- > console에 undefine --> 다음줄 100 ---> 다음 hello 찍힌다.
function calc(x,y){
return x+y
}
console.log(calc(5,3)); //(4)
function calc(x,y){
return x*y
}
console.log(calc(5,3)); //(9)
function이 2개 있으니 실행전 둘다 만들어짐 중복된것(오버로딩된것)이라 밑에 함수 로 만들어진다. --> 4째줄 콘솔 찍으면 밑에 함수 *함수로 결과가 나온다. 9번도 *함수 결과 나온다.
var calc =function(x,y){
return x+y
}
console.log(calc(5,3)); //(4)
var calc ==function(x,y){
return x*y
}
console.log(calc(5,3)); //(9)
8 / 15
undefine으로된 clac 변수가 선언되었기 때문에(4)번 은 1번째함수 (9)번은 2번째 함수가 선언된다.
함수의 파라미터
test(100,200,300); //(1)
test(100); //(2)
test(100,200,300,400,500); //(3)
(1). Global(test : (f--))---> test(argument =[100,200,300] | a=100 | b=200| c=300)
console.log(a) => 100 console.log(b) => 200
새로운 함수 호출할 때마다 argument가 무조건 생성된다.
(2). Global(test(100,200,300) | test(100)--)---> test(argument =[100] | a=100 | b=undefined| c=undefined)
(3). Global(test(100,200,300) | test(100) | test(1,2,3,4,5)--)---> test(argument =[1,2,3,4,5] | a=1 | b=2| c=3 | a|b|c|argument[3] | argument[4] |argument[5])
예제 3-11 p73
Global(A :(f) | b:(f) | A()---)---> A( B( )--- )--- > B( )
"word" "hello"
p76
제일처름 글로벌 내장객체가 만들어 진다. (=window객체)
실행시 : Global (outer : (f) | msg )
(line 1) : Global (outer : (f) | msg = "GLOBAL" )
(line 2)~ : Global (outer : (f) | msg = "GLOBAL" | outer()--- )--> outer( )
(line 3) ~(line 6)Global (outer : (f) | msg = "GLOBAL" | outer()--- )--> outer( inner() | msg "OUTER" | colsole.log(msg) | inner())
(line 7) : Global (outer : (f) | msg = "GLOBAL" | outer()--- )--> outer( inner() | msg "OUTER" | colsole.log(msg) | inner()---)---> inner( msg = INNER | console.log(msg))
(line 9) Global (outer : (f) | msg = "GLOBAL" | outer()--- )--> outer( inner() | msg "OUTER" | colsole.log(msg) | inner())
(line 10) Global (outer : (f) | msg = "GLOBAL" | outer() )
window.a = outer(4)
글로벌 객체에 . a라는 변수를 만들고 outer(4) 의 값을 넣어라
(function() {
console.log("hello");
})()
//선언이 끝나자마자 실행시키고 싶다 --> 즉시실행함수
'프로그래밍 언어 > JavaScript' 카테고리의 다른 글
javascript / html (0) | 2019.06.10 |
---|---|
JavaScript (0) | 2019.04.08 |
Ajax (0) | 2019.02.27 |
04. 자바스크립트 객체 (0) | 2019.02.13 |
02. 데이터 타입과 변수 (0) | 2019.02.13 |