JS의 함수
function 은 로직을 담고있는 변수와 같이 재사용을 편리하게 만들어 준다
function 함수이름 ( arg ){
내용
return값
}
인자, return 등 함수의 기본적인 성질은 여타 다른 언어들과 같은 성질을 지니므로 생략한다
다만 JS가 함수를 정의하는 또다른 방법은
var myfunction = function (){
}
이런 방식으로 정의하고 myfunction()으로 사용할 수 있다.
💬💬💬JS 에서 함수를 정의하는 방법을 공부했는데... 기억이 안나서 찾아보려 하니
function으로 그냥 정의하는 것을 선언식이라고 한다
함수 호이스팅으로 인해 표현식의 경우에 에러가 발생할수 있는데 다음의 경우를 알아보자
(호이스팅이란 JS 에서 실행콘텍스트가 어떻게 동작하는가에 대한 생각, 위치가 이동하는 것으로 생각하지만 함수 및 변수의 위치는 코드의 위치 그대로 있는 상태에서 동작만 다르게 하는것 )
myfunction1()
myfunction2()
myfunction1() {}
var myfunction2 = function() {}
위의 코드를 실행하면
myfunction1 은 아래의 함수의 정의가 위로 올라와 실행이 제대로 되는데
myfunction2 는 var myfunction2가 위로 올라오게 되고 function(){}으로 정의된 부분 호출된 부분의 밑에 그래도 남아있어 ~ is not a function 에러가 발생하게 된다
따라서 함수와 변수는 코드 상단부에 선언을 해주게 되면 호이스팅으로 인한 scope꼬임 현상을 방지 할수 있다.
즉 위의 예에서 함수는 그 자리 그대로 위치 하여 실행되므로 호이스팅에 영향을 받지 않는다.
JS의 배열
다른언어의 배열과 마찬가지로 [] 로 감싸주고 , 로 elements들을 구분해준다.
array.length : 배열의 길이
method
array.forEach() : 배열의 항목들을 순환하며 처리(loop구문과 비슷하다고 생각해주면 되겠다.)
array.push(항목) : 배열의 끝에 항목 추가하기
array.pop() : 배열의 끝에 있는 항목 제거
array.shift() : 배열의 앞에 있는 항목 제거
array.unshift() : 배열의 앞에 추가
array.concat() : 배열에 복수의 원소를 추가
array.indexOf() : 항목의 인덱스 찾기
array.splice(index, number) : array의 index항목부터 number까지 제거
array.slice() : 해당 array의 사본 생성
array.sort() : 오름차순으로 정렬
array.reverse() : 역순으로 정렬
JS의 객체 (다른 언어의 dictionary, Hash 와 같다고 보자)
객체를 만드는 법
1. var objects = { 'first' : 1 , 'second' : 2};
2. var objects = {};
objects['first'] = 1;
objects['second'] = 2;
3. var objects = new Objecst();
objects['first'] = 1;
objects['second'] = 2;
객체를 가져오기
1 . object['first'] = 1
2 . object.first = 1
객체에는 객체를 담을 수도 있고 함수도 담을 수 있다.
var object = {
'list' : { 'first' : 1, 'second' : 2},
'function' : function(){
for(var key in this.list){
alert( key + ':' + this.list[key] + "<br / >");
}
}
};
object.function();
JS의 객체 지향프로그래밍에 핵심이 되는 성질
JS 모듈
모듈화의 장점은
재사용성, 유지보수 등의 향상에 있다.
순수 JS에서는 모듈이라는 개념이 분명하게 존재하지는 않는데
JS가 구동되는 호스트 환경(웹브라우저 등)에 따라서 모듈화 방법이 제공된다
호스트 환경이란 JS가 구동되는 환경을 의미,
예를 통해서 모듈을 사용해보자
myhelloworld.js
function hello(){
return 'hello world';
}
main.html
...
<head>
<script src = 'myhelloworld.js'></script>
</head>
<body>
<script>
alert(hello());
</script>
</body>
node.js 에서의 모듈화는 필요할때 따로 찾아보자