본문 바로가기

공부중 :)/javascript

Javascript : 데이터 타입과 값(2)

반응형


Javascript : 데이터 타입과 값(2)





함수 (function)

@ 함수는 자바스크립트 프로그램에 정의되어 있거나 자바스크립트 구현에 미리 정의되어 있는 실행

   가능한 코드이다. 함수는 한 번만 정의하면, 자바스크립트 프로그램 내에서 여러번 실행될 수 있다.

   또한 계산 대상인 값을을 지정하는 전달인자(argument)나 매개변수(parameter)를 넘겨받을 수 

   있으며 계산 결과를 나타내는 값을 반환할 수도 있다.

function square(x){   // 함수 이름은 square이며, 전달인자 x를 받았다.
   return x * x;      // 전달인자를 제곱한 값을 반환한다.
}

   함수를 정의할 때 대부분 위 코드처럼 함수 정의 문법을 사용하지만 자바스크립트는 함수를 정의하는

   함수 리터럴 문법도 제공한다.

//함수 정의
function square(x){
   return x*x;
}
//함수 리터럴
var square = function(x){
   return x*x;
}

   이름 없는 함수를 프로그램 내에 리터럴 형태로 포함시킬 수 있게 한 최초의 언어인 Lisp 프로그램

   언어를 기리는 의미에서 이러한 방식으로 정의된 함수를 람다함수(lambda function)라고 부른다.



객체 (object)

@ 객체는 이름 붙은 값들의 모음이다. 보통 이 이름 붙은 값들을 객체의 프로퍼티(property)라고 부른다.

   객체 프로퍼티를 참조하려면 아래 코드와 같이 객체 이름을 쓰고 이어서 마침표와 프로퍼티 이름을

   적어주면 된다.

//예) image라는 이름의 객체에 width와 height라고 이름붙은 프로퍼티가 있는 경우,
image.width;
image.height;

   객체는 특수한 생성자 함수를 호출하여 생성할 수 있다.

var o = new Object();
var now = new Date();

   객체를 생성하고 나면 자유롭게 객체를 사용할 수 있다.

var point = new Object();
point.x = 223;
point.y = 150;

   또한 객체 생성하고 프로퍼티를 지정하는 객체 리터럴(객체 초기자라고도 불린다.) 문법을 제공한다.

   위 코드를 아래와 같이 생성하고 초기화 할 수 있다.

var point = { x : 223, y : 150 };

   또한 객체 리터럴은 아래 코드와 같이 중첩될 수 있다.

var rectangle = {
   upperLeft : { x : 2, y : 4},
   lowerRight : { x : 4, y : 4}
};



배열 (array)

@ 배열은 객체처럼 데이터 값들의 모음이다.

   객체 내에 포함되는 각 데이터 값에는 이름이 있는 반면, 배열의 각 데이터 값에는 번호, 즉 인덱스(index)가

   있다. 배열 인덱스는 0부터 시작하므로, a[2]는 배열a의 세 번째 원소를 가리킨다.

   배열은 다른 배열이나 객체, 혹은 함수를 포함한 어떠한 자바스크립트 데이터 타입의 데이터라도 담을 수 있다.

//document객체의 images배열에 두번째 원소로 저장된 객체의 width프로퍼티를 가리킨다.
document.images[1].width;

   배열은 Array() 생성자 함수로 생성할 수 있고, 배열의 어떤 인덱스에라도 얼마든지

   엘리먼트를 할당할 수 있다.

var arr = new Array();
arr[0] = 1.2;
arr[1] = "hello world";
arr[2] = true;
arr[3] = { x : 1, y : 3 };

   배열 원소들을 Array() 생성자에 넘겨주어 배열을 초기화할 수도 있다.

   위 코드는 아래와 같이 재작성 할 수 있다.

var arr = new Array(1.2, "hello world", true, { x : 1, y : 3 });

   Array() 생성자에 하나의 숫자를 넘겨주면 그 숫자는 배열의 크기로 사용된다.

   아래 코드는 정의되지 않은 원소 5개를 포함한 새 배열을 생성한다.

var arr = new Array(5);
console.log(arr);   // [, , , ,]

   배열 또한 생성하고 초기화하는 리터럴 문법을 제공한다. 대괄호 내 값들은 0부터 시작하는

   배열 인덱스에 차례대로 할당된다.

var arr = [1.2, "hello world", true, { x : 1, y : 3 }];
console.log(arr[1]);   // hello world
console.log(arr[3]);   // { x : 1, y : 3 }
console.log(arr[3].x);   // 1

   객체 리터럴처럼 배열 리터럴도 중첩될 수 있으며, 배열 리터럴 내 요소로 임의의 표현식이

   올 수 잇으며 반드시 상수일 필요는 없다.

var matrix = [[1,2,3,], [4,5,6], [7,8,9]];   //배열 중첩

//임의의 표현식도 들어올 수 있으며, 반드시 상수일 필요는 없다.
var base = 1024;
var table = [base, base+1, base+2, base+3];



null

@ 자바스크립트 키워드 null은 아무런 값도 나타내지 않는 특수한 값이다. 어떤 변수가 null값을 가지면

   그 변수가 유효한 객체나 배열, 숫자,문자열 또는 불리언 값을 담고 있지 않다는 것을 알 수 있다.

   null은 불리언 문맥에서 사용되면 false로 변환되며, 숫자 문맥에서는 0으로, 문자열 문맥에서는

   "null"로 변환된다.



undefined

@ 자바스크립트에서 종종 사용되는 또 다른 특수한 값으로 undefined 값이 있다.

   undefined는 선언은 되었지만 값이 할당된 적이 없는 변수에 접근하거나, 존재하지 않는 객체 프로퍼티에

   접근할 경우 반환되는 값이며, null과는 동일한 값은 아니다.

   Undefined 값은 불리언 문맥에서 사용되면 false로 변환되며, 숫자 문맥에서는 NaN으로,

   문자열 문맥에서는 "undefined"로 변환된다.



반응형

'공부중 :) > javascript' 카테고리의 다른 글

Javascript : 변수  (2) 2016.02.15
Javascript : 데이터 타입과 값(1)  (0) 2016.02.13
Javascript : javascript 어휘 구조  (0) 2016.02.12
Javascript : 자바스크립트를 공부하자!  (0) 2016.02.12