-
[Javascript] 변수(Variable) & 자료형(Type)Front-End(Web)/Javascript 2020. 11. 24. 01:56반응형
Wecode 2주차(Javascript) 미션 겸, 변수 및 자료형 복습을 위함.
💛 변수(Variable)
1. 변수(Variable) 란?
프로그래밍 언어에서, 메모리의 위치를 가진 이름값을 의미한다. (자료를 담고 있다는 개념)
변수를 선언하는 방법은 var, let, const 3가지가 있다.
var a = 1; let b = 2; const c = 3;
2. 변수 선언방법: var, let, const
- var
- ES5까지 사용되던 변수 선언방법. 수정가능.
- Functional Scope. 전역변수처럼 반영되어 아래와 같은 성질로 인해 정교성이 떨어진다.
- 한 Scope 내에서도 같은 이름의 변수를 재선언할 수 있다.
- 함수처럼 Hoisting 되어, 변수 선언 전에도 이미 변수가 존재하는 것으로 인식됨.
function () { console.log(a); // undefined(초기값 상태) var a = 1; console.log(a); // 1 }
* Hoisting: 함수 등을 선언하면 JS 맨 상단으로 올라가서 전역에서 사용이 가능도록 하는 현상.
- let
- ES6 신규제공된 변수 선언방법. 수정가능.
- Block Scope. 지역변수 개념으로 Scope({}) 내에서만 유효함.
- 한 Scope 내에선 같은 이름의 변수를 재선언할 수 없음.
function f() { { let x; { // 새로운 블록 안에 새로운 x의 스코프가 생김 const x = "sneaky"; x = "foo"; // 위에 이미 const로 x를 선언했으므로 다시 값을 대입하면 Error } // 이전 블록 범위로 돌아왔기 때문에 'let x'에 해당하는 메모리에 값을 대입 x = "bar"; let x = "inner"; // SyntaxError: Identifier 'x' has already been declared } }
- const
- ES6 신규제공된 변수 선언방법. 수정불가.
- Block Scope. 마찬가지로 지역변수 개념.
const a = 10; a = 20; // Uncaught TypeError: Assignment to constant variable /* [주의!] 하지만, 객체나 배열의 내부는 변경할 수 있다. */ const a = {}; a.num = 10; console.log(a); // {num: 10} const b = []; b.push(20); console.log(b); // [20]
💛 자료형(Type)
3. 자료형(Type) 이란?
변수로 선언한 자료의 형태 혹은 성질. 기본적으로, 기본형과 참조형으로 분류하며 종류는 아래와 같다.
- 기본형(Primitive Type): Number, String, Boolean, null, undefined
- 참조형(Reference Type): Object, Array, Function, RegExp(정규식) - 기본형의 집합으로 메모리의 위치값을 참고
4. 자료형(Type) 종류
- Number: 숫자형
const count = 17; // 17(integer) const size = 17.1; // 17.1(decimal) const inf = 1 / 0; // Infinity const negInf = -1 / 0; // NegativeInfinity const nAn = "not" / 2; // NaN(숫자가 아님)
- String: 문자형
const char = 'c'; // c const tae = 'taeng'; // taeng const greeting = 'hello' + tae // hello taeng const greeting2 = `hi ${tae}`; // hi taeng - template literals
* Template literals 사용시에는, `따옴표` 및 내부에는 ${변수}임을 반드시 숙지!
- Boolean: true/false형
const tru = true; // true const fal = 3 < 1; // false
* false에는 0, null, undefined, NaN, ' ' 등이 해당된다.
- null(없는 값) / undefined(있으나 선언하지 않은 값, 초기값)
let x; console.log(x); // undefined console.log(y); // null
- Object: 객체타입 (key로 위치확인: obj['key'] or obj.key)
const obj = { name: 'taeng', age: 28 }; console.log(obj.name); // taeng obj.age = 29 // 28 -> 29 (내부요소는 수정가능)
- Array: 배열타입 (index로 위치확인: arr[1])
const list = []; const list2 = [1, 2, 3, 4, 5]; console.log(list2[1]); // 2
- Function: 함수 타입 (변수에 지정할수도 있고, 함수이름 자체도 Hoisting되서 사용가능)
function Plus(x,y) { return x+y; }; const myFunc = function Alert() { return 'Function in Variable'; }; Plus(2,3); // 5 console.log(myFunc) // Function in Variable
5. 자료형(Type) 확인 및 변경
- 확인: typeof 로 기본형, instanceof 로 참조형을 확인할 수 있다.
let num = 1; typeof num; // number let str = 'hi'; typeof str; // string let arr = []; typeof arr; // object arr instanceof // array
- 변경: 함수, 메서드 등 사용하면 된다.
// Boolean(), Number(), String(), Object() 함수 사용하기 Boolean(x) Number(x) String(x) Object(x) // 메서드 사용하기 x.toString() x.toFixed() x.toExponential() x.toPrecision() // parseInt(), parseFloat() 숫자형태 변형(전역함수) parseInt(x) parseFloat(x)
6. Javascript의 Dynamic Typing(동적 자료형 설정)
변수타입을 선언하지 않으면 상황에 따라 number-string 판단함.
let text = "hello"; console.log(text.charAt(0)); // 첫글자 h만 출력 text = 1; text = "7" + 5; //5를 string으로 변환 → 75! text = "8" / "2"; //8, 2를 number로 변환 → 4! console.log(text.charAt(0)); // string이 아니므로 Error!
Hoisting의 정확한 개념, Template literal 명칭 등 개념을 본질적으로 공부하는 좋은 기회였다.
반응형'Front-End(Web) > Javascript' 카테고리의 다른 글
[Javascript] Iteration Protocol (0) 2020.12.17 [Javascript] Class(클래스) 기본 (0) 2020.12.16 [Javascript] 제어문 - 반복문 (0) 2020.11.29 [Javascript] 제어문 - 조건문 (0) 2020.11.29 [Javascript] 배열(Array) (0) 2020.11.22