컴사랑의 이런 저런 이야기

자바스크립트 함수에 대하여 본문

개발/웹관련 개발

자바스크립트 함수에 대하여

comlover 2014. 10. 29. 12:40
반응형
SMALL

자바스크립트 언어은 일반적인 C/C++, Java, C# 등과는 차이가 조금 있는데, 저도 종종 헷갈려서 정리차원에서 한 번 적어봅니다. 예를 들면 자바스크립트(JS)는 prototype-based 의 객체지향이고, C++, Java, C#은 Class-based 객체이다. 등등이죠. 

그 중에서도 주로 함수에 대해서 적어보겠습니다.


자바스크립트에서 함수를 선언하는 방식은 크게 두 가지가 있습니다: 일반적으로 알고 있는 함수 선언과, 표현식으로 선언

// 선언

function myFunc1() {

   console.log("Hi");

}

var myFunc2 = {

   console.log("Hi");

}

// 사용

myFunc1();

myFunc2();


myFunc1은 일반적으로 함수 선언한 것이며, myFunc2는 표현식으로 선언한 것입니다. 둘의 사용법 등의 차이는 없습니다. 다만 myFunc1은 사용되는 곳이 선언되는 곳보다 먼저 있어도 제대로 실행이 되지만, myFunc2는 그렇지 못합니다. (사용하기 전에 반드시 myFunc2()가 정의되어야 하며 그렇지 않으면 undefined 입니다)

(그 외에도 Function()을 이용해서 함수를 만들 수도 있지만 많이 쓰이지는 않기에...)


그리고 자바스크립트에서는 함수를 선언하면서 바로 실행시킬 수 있습니다. (immediate function 이라고 합니다)

문법적으로는 (function() { ... })(); 와 같은 형식인데요, 아래와 같습니다.

(function() { console.log("hi"); })()


그러면 함수가 바로 실행이 됩니다.


일단 함수선언과 사용에서의 타 언어와의 차이점 몇가지를 적어봐는데요, 사실 또 다른 큰 차이점은 변수의 scope가 아닐까 합니다. 그런데 이건 다음에 기회가 되면 한번 다뤄보구요.


아래의 내용도 알면 도움이 됩니다. 


대부분 타 언어도 "[]" 와 "."을 지원하는데요, 타 언어와 달리 자바스크립트에서는 이 둘을 대부분 바꿔서 쓸 수 있습니다.

var person = {name: "comlover", age: 20};

person.name;     // => comlover

person['name']; // => comlover


var person2 = {};

person2.name = "comlover";

person2.age = 20;

// => person2가 {name: "comlover", age: 20}; 으로 map (key - value 쌍)으로 됩니다.


반응형
LIST
Comments