반응형
C# 기반의 개발 및 공부만 해온 나에게는 너무 신선한 충격이다.
강의를 들으면서도 계속 이게 된다고?
생각하면서 코드를 쳐 놓고도 들여다 보기를 반복하고 있다.
그리고 이 부분이 자바스크립트 언어 만의 강력한 장점이 될 수 있겠다는 생각이 들었다,
함수를 객체화 할 수 있는건 다른 언어에서도 가능하지만 변수 안에 넣을 수 있는 값으로
인식을 하니 활용 범위가 무궁무진해진 느낌이다.
그냥 간단한 예제 위주로 작성해 보았다,
이렇게 선언한 변수 안에 바로 익명 함수를 작성할 수 있다.
자바스크립트에서는 다른언어에서는 딕션너리라고 명칭하는 문법을 객체라고 하던데
함수가 값으로서 기능을 하다 보니 이미지와 같이 키값 안에 함수를 바로 작성할 수 있다.
만든 함수의 인자로 함수를 받을 수도 있고 함수 안에 변수로 딕셔너리를 만들어 원하는 값을 줄줄이 출력이 가능하다.
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript">
var i = 5;
function a(){
var i = 10;
b();
}
// 사용 될 때가 아닌 정의될 때의 전역 변수를 사용한다. : 정적 유효 범위 (렉시컬 스코핑!)
// 값으로서의 함수 : 자바스크립트에서는 함수도 객체이다. 함수도 일종의 값이다.
function b(){
document.write(i);
}
a();
var a =function() {
// body...
}
// 자바스크립트에서 말하는 객체 안에 함수를 넣을 수 있다. 함수는 값이니까
a= {
b:function(){
}
}
//값으로서의 함수
function cal(func,num) {
func(num);
// body...
}
function increase(num) {
return num +1;
}
function decrease(num) {
return num -1;
}
alert(cal(increase(),1));
alert(cal(decrease(),1));
function cal(mode){
//객체
var funcs = {
'plus' : function(left,right){return left + right},
'minus': function(left,right){return left - right}
}
return funcs[mode];
}
alert(cal('plus')(2,1));
alert(cal('minus')(2,1)) ;
var process = [
function(input){return input + 10;}
function(input){return input * input;}
function(input){return input / 2;}
];
var input=1;
for (var i =0; i<process.length; i++) {
process[i](input);
}
alert(input);
</script>
</body>
</html>
반응형
'Web Dev' 카테고리의 다른 글
Java (Spring) : maven project 생성 (0) | 2021.04.01 |
---|---|
Java (Spring) : 스프링 개요 -> IoC 컨테이너에 대하여 (2) | 2021.04.01 |
Java : 네트워크 (0) | 2021.03.29 |
HTML : 다시 한 번 기초 복습 겸 (태그 공부) (0) | 2021.03.24 |
JavaScript : 자바스크립트 생성자의 자유도, 상속에 대하여 (0) | 2021.03.24 |
JavaScript : 라이브러리 사용 맛 보기 (0) | 2021.03.20 |