데이터 타입
기본 타입(원시 타입)
Number(숫자), String(문자열), boolean(논리값), undefined, null, symbol
원시 타입 데이터는 데이터를 구성하는 가장 기본적인 요소로 불변 값 정의되어있다숫자(Number)
💡 자바스크립트는 타입이 없으므로 숫자를 모두 64비트 부동소수점으로 표현한다. 특수한 값 Infinity - 무한대 , 전역변수 NaN - 부정값 not a number 전역변수 Number.POSITIVE_INFINITY 플러스 무한대 Number.NEGATIVE_INFINITY 마이너스 무한대
var intNum = 10; var floatNum = 0.1;
💡 자바스크립트에의 숫자는 부동소숫점으로 처리함에 따라, 정확한 값이 출력되지 않음.
var number1 = 0.1; var number2 = 0.2; console.log(number1 + number2); // 0.30000000000000004 console.log(0.3 == number1 + number2); // false 1 / 0 - // Infinity 1 / 0; //-Infinity nAn = "not a number" / 2; // NaN
문자열(String)
자바스크립의 문자열 길이가 16비트인 뮤니코드 문자(uft-16 코드)를 나열한 것으로 전 세계에서 사용하는 문자를 대부분 표현할 수 있다. ' '," "를 사용하여 표현. ""는 아무것도 포함하지 않는 문자열이라고 하여 빈 문자열이라고 한다.
var singleQuoteStr = "singQuoteStr"; var doubleQuoteStr = "doubleQuoteStr";
💡 문자열은 문자열의 인덱스를 통해 접근할 수 있다.
var str = "test"; console.log(string[0]); // t가 출력; var str = "test"; console.log(str[0], str[1], str[2], str[3]); str[0] = "A"; console.log(str); str = "ssong"; console.log(str);
💡 한번 정의된 문자열은 변경될 수 없다.💡 재할당은 가능하지만, index값을 통한 접근변경은 불가능함.
var str = "test"; str[0] = "T"; console.log(str); // test;
Boolean
조건식이 참인지 거짓인지 표현하기 위해 사용하는 값입니다.
true(1), false(0);
undefined
값을 아직 할당하지 않은 변수의 값 없는 객체의 프로러티를 읽으려고 시도 했을 때의 값 없는 배열의 요소를 읽으려고 시도했을 때의 값 아무것도 반환하지 않는 함수가 반환하는 값 함수를 호출해을 때 전달받지 못한 인수의 값 코드로 undefined 대입한 것이 아니라 자바스크립트 엔진이 변수를 undefined로 초기화 한것이다.!!!
var emtyVar;
💡 변수명만 선언할 경우에, undefined💡 undefined과 null은 둘다 빈값이지만, null은 사용자가 명시적으로 선언한 빈값이므로, 값이 들어있다고 볼수 있다.(null)💡 undefined는 타입이자 값을 나타냄. typeof(undefined)
null
아무것도 없음을 값으로 표현한 리터럴 주로 프로그램에서 무언가 검색했지만 찾지 못했을 때 아무것도 없음을 전달하기 위한 값으로 사용된다.
var nullVar = null;
💡 null의 경우 typeof의 결과가 null이 아닌 object이다.
var nullVar = null; console.log(typeof nullVar); // object; console.log(nullVar == null); // true
참조타입
💡 자바스크립트에서 숫자, 문자열, 불린값, null, undefined같은 기본타입을 제외한 모든 값은 객체다.
객체는 단순히
'이름(key) : 값(value)'
형태의 프로퍼티들을 저장하는 컨테이너로서, 컴퓨터 과학 분야에서 해시(Hash)라는 자료구조와 상당히 유사하다.기본 타입은 하나값만을 가지는데 비해,
참조타입은 객체 는 여러 개의 프로퍼티들을 포함할 수 있다.
객체의 프로퍼티는 기본 타입의 값을 포함하거나 다른 객체를 가리킬 수 있다.
💡 참조하고 있는 원본의 값이 변경될 때, 참조타입의 값도 변경됨.
var str = "텍스트"; // 원시값 var arr_01 = [str]; // 원시값을 참조 arr_01[0] = "텍스트2"; // 원시값을 참조함에 따라서, 원시값이 변경되진 않음. //------------------------------------------ var arr_02 = [1, 2, 3, 4]; // 참조값 var arr_03 = var_02; // arr_03은 var_02를 참조 var03[0] = 5; console.log(arr_02); // [5, 2, 3, 4] 참조에 의해 arr_02의 값이 변경되었음.
프로퍼티의 성질에 따라 프로퍼티는 함수로 포함할 수 있다 이러한 프로퍼티를 메서드라 부른다.
객체(Object)
객체 안에 저장된 값은 바꿀 수 있습니다.. 객체 타입의 값을 변수에 대입하면 변수에는 그 객체에 대한 참조(메모리에서의 위치정보)가 할당된다.
객체 생성 방법
//new Object() 생성자 함수 이용 var foo = new Object(); // 객체 프로퍼티 생성 Human.name = "foo "; Human.sex = "female"; //객체 리터럴 방식 var foo2 = { name: "foo ", sex: "male", }; var foo3 = function (name, sex) { this.name = name; this.sex = sex; }; var foo3 = new Human3("foo ", "female"); console.log(foo); console.log(foo2); console.log(foo3);
객체 프로퍼티 읽기/쓰기/갱신
var foo = { name: "foo", age: 20, }; //리터럴 방식 // 객체 프로퍼티 읽기 console.log(foo.name); console.log(foo["name"]); // 갱신 foo.age = 30; console.log(foo.age); console.log(foo["age"]); //생성 foo.job = "student"; //대괄호 표기법만 사용해야 할 경우 //접근하고자 하는 프로퍼티가 예약어나 연산자가 있는 표현식일 경우 foo["full-name"] = "foo bar"; console.log(foo["full-name"]); console.log(foo.full - name); //NaN
배열(Array)
var arr = [];
💡 배열의 선언 방법은 "[]"💡 배열 안의 값을 가져오려면 인덱스(Index)를 이용함. Index는 0부터 시작함.💡 배열이 생성될때 length 메소드가 함께 생성됨. length는 1부터 시작함.
var arr = [1, 2, 3, 4]; arr[0]; // 1; arr.length; // 4; arr.length = 7; console.log(arr); // arr = [1, 2, 3, 4, empty, empty x 2];
💡 배열 선언시 length를 먼저 선언할 수 있음 그럴경우, 배열의 길이에 따라서 먼저 생성이 됨. 빈값은 empty값이 출력됨.
생성자 함수를 이용해서 배열을 만들 경우, new Array(3)과 같이 미리 length를 지정할 수 있다.
var arr = new Array(3); // arr.length = 3; , arr = [empty x 5];
💡 배열도 객체이므로, 동적으로 프로퍼티를 생성할 수 있다.
var arr = [1, 2, 3, 4]; arr.string = "test"; console.log(arr); // arr = [1, 2, 3, 4, string]; arr[4] = 6; console.log(arr.length); // 5
💡 arr의 length 프로퍼티는 배열의 가장 큰 인덱스가 변했을 경우에만 변경됨.💡 배열이 아니지만, length값이 있는 경우 유사배열 객체라고 한다.
Last updated