- 관계형 데이터 베이스
- javascript 이론
- 배열 메소드
- css3 selector
- 겸손한 자바스크립트
- findindex
- unobtrusive javascript
- express 서버
- requirejs
- css3 셀렉터
- javascript
- 미들웨어
- IIS 서버
- displaytable
- dom event
- CSS
- 컨텐츠 중간 위치
- supervisor
- ecma script
- database 개념
- jQuery
- ecma6
- ajax
- 마임타입
- array method
- body-parser
- mysql
- Git
- nodejs
- ecmascript method
Martin`s Work
[Javascript] 변수의 타입-데이터 값 조작 방식 본문
변수의 조작
자바스크립트는 세가지 주요한 방식을 통해 데이터의 값을 조작할 수 있다.
1. 값을 새로운 변수에 할당하여 사용할 수 있다.
2. 값을 함수나 메서드의 전달인자로 넘겨줄 수 있다.
3. 데이터의 두 값이 동일한지를 알아보기 위해 한 값과 다른 값을 비교할 수 있다.
이러한 데이터 값을 조작하는 방식은 2가지로 나뉘는데, 그것이 기본형 데이터(값에 의한-by value) 와 참조형 데이터(by-reference) 이다.
기본형 데이터(값에 의한-by value)
종류- Number, String, boolean, null, undefined
기본형 데이터를 조작할 때 가장 중요한 것은 데이터 값이다. 값을 할당할 때에 기본형 데이터의 경우 실제 그 값이 복사되며, 복사시 해당 데이터는 변수, 객체 프로퍼티, 배열 원소에 저장되어 원본 데이터와는 별도의 독립적인 값이 된다. 따라서 값을 변경한다고 하여 원본 데이터에는 아무런 영향을 미치지 않는다.
1 2 3 4 5 | var original = 1; var copy = original; original = 2; console.log(original); //result : 2 console.log(copy); //result : 1 | cs |
위의 소스에서 보면 'original' 이라는 변수에서 값을 할당한 후, 'copy' 라는 변수에 'original' 변수의 값을 복사하였다. 그 후 원본 'original' 변수의 값을 바꾸고 나서 값을 보면 원본은 변경이 되었지만 'copy' 라는 변수의 값은 변경되지 않았다.
이러한 데이터는 함수 내에서 값을 변경하면 함수에 전달된 데이터만 변경될 뿐 함수 전달된 원본 복사본에는 아무런 영향을 미치지 않는다.
1 2 3 4 5 6 7 8 9 | // input your code herevar original = 1; var copy = original; function add(x,y){ return x = x +y; } add(original, copy); console.log(original); //result : 1 console.log(copy); //result : 1 | cs |
참조형 데이터(by-reference)
종류- Object, Array, function
참조형 데이터의 경우는 값에 대한 실제 복사본이 오직 하나만 존재하며, 참조형 데이터는 그 값의 주소를 말 그대로 참조 할 값의 복사본이나 값 자체가 할당되지 않는다. 참조에 의해 할당된 새 변수는 원본 변수가 가르키는 값과 동일한 값을 가르킨다. 원본 변수와 할당된 변수는 모두 동등하며, 값을 조작하는데 사용될 수 있다. 그래서 할당된 변수(참조)가 변경되면 원본 변수에서도 동일하게 변경된다.
1 2 3 4 5 | var original = [1,2,3,4,5]; var copy = original; copy[0] = undefined; console.log(copy); //result : [undefined, 2, 3, 4, 5] console.log(original); //result : [undefined, 2, 3, 4, 5] | cs |
'Javascript > 이론' 카테고리의 다른 글
[Javascript] 변수의 데이터 타입 (1) | 2017.08.20 |
---|---|
[Javascript] 겸손한 자바스크립트 (2) | 2017.07.23 |
[Javascript/이론] 자바스크립트 프로토타입 개념 (0) | 2017.03.08 |