자바스크립트 강좌 8 - 함수
Javascript 2012. 3. 8. 17:11
7. 자바스크립트 함수
1. 함수
1 - 1. 함수란 일단 한 번 정의되면 임의 횟수에 걸쳐서 호출되거나 실행될 수 있는 자바스크립트 코드 블록입니다.
1 - 2. 함수 정의 와 호출
1 - 3. 중첩된 함수 (자바스크립트에서 함수는 다른 함수 안에 중첩되어 정의될 수 있다.
1 - 4. 함수 리터럴
1 - 5. 함수 이름 붙이기
1 - 6. 함수 전달인자
1 - 7. 생략 가능한 전달인자 / arguments
1 - 8. 데이터 / 메서드로서의 함수
1 - 9. 생성자 함수
1 - 10. 함수 프로퍼티와 메서드 (peorotype)
1 - 11. 나만의 함수 프로퍼티 생성하기
1 - 12. call(), apply() 메서드
1 - 13. 함수 유효 범위와 클로저
2. 예제 코드
함수 유효범위 및 클로저 바로가기
2. 예제 코드
-
/*
-
-
2. [1 - 2] 예제 코드
-
-
*/
-
-
// 함수 정의
-
-
function fn(){
-
return this;
-
}
-
-
// 호출 연산자('()')를 사용해 호출한다.
-
-
// 함수 호출
-
-
alert(fn()); // object
-
-
-
/*
-
-
2. [1 - 3] 예제 코드
-
-
*/
-
-
// 중첩함수
-
-
// 중첩함수란 곧 클로저 생성과도 깊은 연관이 있습니다.
-
-
function fn(){
-
-
function fn(){
-
-
return this;
-
}
-
-
return this;
-
}
-
-
alert(fn()); // object
-
-
-
/*
-
-
2. [1 - 4] 예제 코드
-
-
*/
-
-
var fn = function(){ return this; };
-
-
alert(fn()) // object
-
-
-
/*
-
-
2. [1 - 6] 예제 코드
-
-
*/
-
-
// 함수 매개변수는 아래와 같이 생략이 가능합니다.
-
// 생략된 매개변수는 정의 되지않은 값을 나타내는 'undefined'가 반환됩니다.
-
var fn = function(x, y){
-
-
return y;
-
};
-
-
-
alert(fn(1, 2)); // 2
-
alert(fn(1)); // undefined
-
-
-
/*
-
-
2. [1 - 7] 예제 코드
-
-
*/
-
-
// 매개변수가 가변적이라면 아래와 같이 매개변수를 나타내는 객체인 arguments을 이용할 수 있습니다.
-
var fn = function(){
-
-
-
return arguments[arguments.length - 1];
-
};
-
-
-
alert(fn(1, 2)); // 2
-
alert(fn(1)); // 1
-
-
-
/*
-
-
2. [1 - 8] 예제 코드
-
-
*/
-
-
var o = {
-
fn: function(){
-
return this;
-
}
-
}
-
-
// 여기서 o.fn() 함수가 반환하는 this는 해당 호출객체인 o를 나타내며 즉, 반환값은 true가 나온다.
-
alert(o.fn() === o) // true
-
-
-
/*
-
-
2. [1 - 9] 예제 코드
-
-
*/
-
-
-
function fn(){
-
return this;
-
}
-
-
// new 연산자와 생성자 함수를 통한 객체 생성시 fn은 생성자 함수로 객체의 클래스이며 동시에 생성자 함수로 부를 수 있습니다.
-
var o = new fn();
-
-
-
/*
-
-
2. [1 - 10] 예제 코드
-
-
*/
-
-
function fn(x){
-
return this;
-
}
-
-
-
// 함수의 프로토타입 맴버 생성을 위한 프로퍼티이다.
-
alert(fn.prototype);
-
-
-
/*
-
-
2. [1 - 11] 예제 코드
-
-
*/
-
-
function fn(x){
-
return this;
-
}
-
-
-
// 함수의 프로토타입 맴버를 생성합니다.
-
fn.prototype = {
-
x: 'x'
-
};
-
-
alert(fn.prototype.x); // x
-
-
-
/*
-
-
2. [1 - 12] 예제 코드
-
-
*/
-
-
// call(), apply()
-
-
// 다른 어떤 객체의 메서드인 것처럼 호출할 수 있게 해주는 함수 입니다.
-
// 자바스크립트 패턴중 메서드 빌려쓰기 패턴에서 유용하게 쓰일수 있습니다.
-
-
var o = {
-
x: null,
-
fn: function(x){
-
-
this.x = x;
-
-
return this;
-
}
-
}
-
-
-
var o1 = {
-
}
-
-
alert(o.fn.call(o1, 'x').x); // x
-
-
// apply() 메서드는 call() 메서드와는 달리 인자값을 배열로 전달합니다.
-
-
var o = {
-
x: null,
-
y: null,
-
fn: function(x, y){
-
-
this.x = x;
-
this.y = y;
-
return this;
-
}
-
}
-
-
-
var o1 = {
-
}
-
-
alert(o.fn.apply(o1, ['x', 'y']).x); // x
-
alert(o.fn.apply(o1, ['x', 'y']).y); // y
-
-
-
/*
-
-
2. [1 - 13] 예제 코드
-
-
*/
-
-
// 함수 유효범위 및 클로저에 대한 내용은 간단히 다룰수 있는 내용이 아니므로 이전 포스트를 참고 하시기 바랍니다.
함수 유효범위 및 클로저 바로가기
참고서적: (자바스크립트 핵심 가이드)