본문 바로가기
프로그래밍 언어/JavaScript

03 . 함수와 실행 컨텍스트(Javascript)

by zieunee 2019. 2. 13.
반응형




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])

인자값이 추가되면 argument 가 생성된다.


예제 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