○ javascript는 함수를 정의하는게 아니라 만드는 것
-> 객체를 만드는 것이기 때문에 다른 곳에 대입(전달)이 가능함
//1)
var add = new Function("a, b", "return a+b;");
document.write(add(3,4));
//2)
var add = function(a,b) {
return a + b;
};
document.write(add(3,4));
//3)
function add(a,b) {
return a + b;
}
document.write(add(3,4));
○ 함수의 매개변수는 데이터를 담는 그릇이 아니라 매개변수의 이름일 뿐임
-> 여러개의 매개변수를 전달해도 인자의 갯수와 상관없이 함수의 arguments배열에 전달됨
function add(a,b) {
alert(arguments.length);
alert(arguments[0]);
return a + b;
}
document.write(add(5,4,3,2,1));
○ 전역 변수, 지역 변수
- var를 생략하고 변수를 만들었을 때 전역객체인 window에 속성으로 붙음
a = 1; => window.a = 1;
- function{}외에 중괄호에서는 변수 영역을 나누지 않음 = 함수영역만 변수의 영역을 나눔
a = 1; //전역변수
var a = 5; //전역변수
function add() {
a = 2; //전역변수
var = 3; //지역변수
}
{ var = 4; } //전역변수
○ 클로저
특정함수(f1)안에 지역변수(var a)와 내부함수(f2)가 존재하고 특정함수가
내부함수를 리턴하고 특정함수(f1)의 지역변수를 사용할 경우 내부함수(f2)를 클로저라고함
-> 지역변수(var a)의 생명주기는 함수가 종료될때 사라져야 하지만
클로저를 이용할 경우 지역변수의 생명주기가 늘어나게됨
function f1(){
var a = 1; //지역변수
return function f2(){
return a;
}
}
var f = f1();
var a = f();
'study > Javascript' 카테고리의 다른 글
8_[기본]_구조, onload addEventListener, select API(querySelector()), 노드, children과 childNodes (0) | 2022.06.09 |
---|---|
6_[기본]_JSON[JavaScript Object Notation(JSON)] (0) | 2022.05.30 |
5_[기본]_javascript_변수_배열_Object (0) | 2022.05.27 |
4_javascript_(정리) (0) | 2020.01.07 |
3_javascript_(DOM,이벤트,정규표현식) (0) | 2019.12.25 |