Variable / Hoisting / Data Type
1. Use Strict : 엄격 모드
//Use strict!
//added in ES 5
//use this for Vanilla Javascript
'use strict';2. Variable : 변수, 변경될 수 있는 값
//let (added in ES6)
let name = 'ellie';
console.log(name); //ellie
name = 'hello';
console.log(name); //hello2-1. Block scope / global scope
scope
type
Description
Block scope
{ } 블럭 안에 코드를 작성하는 변수
밖에서 접근이 되지 않음
Global scope
블록을 쓰지 않고 파일 안에 바로 정의해서 쓰는 변수
어디에서나 접근 가능
2-2. var를 사용하면 안 되는 이유
선언도 하기 전에 값을 할당함
값을 할당하기 전에도 출력이 됨
var hoisting?!
Block scope 이 없음 → 아무리 블록 안에 변수를 선언해도 밖으로 나와버림
var hoisting (move declaration from bottom to top) 어디에 선언했는지 상관없이 항상 제일 위로 선언을 끌어올려 버리는 것
3. Constant : 상수, 한 번 할당하면 값이 절대 바뀌지 않음
" Favor Immutable Data type Always "
constant는 변하지 않는 값으로, 개발자들이 선호하는 immutable data type
security - lock the key from virus : 해커들이 몰래 이상한 값을 넣는 것을 방지 할 수 있음
thread safety : thread들 동시에 변수에 접근해서 값을 변경할 수도 있기에, constant가 이를 방지해 줌
reduce human mistakes : 실수를 방지하여 편리한 유지보수가 가능
Type
Typical Variable
Kinds
Immutable Type
const
primitive types, frozen objects
Mutable Type
let
all objects by default are mutable in JS
4. Variable types : 데이터 타입
Primitive Type : 더 이상 작은 단위로 나눠질 수 없는 한 가지의 작은 아이템(single item)
number
string
boolean
null
undefined
symbol
Object Type : 기본 데이터타입을 여러 개 묶어, 한 단위로 관리할 수 있게 해주는 것(box container)
기본 데이터 타입 이외의 값은 모두 객체 타입으로, JS를 이루고 있는 모든 것이 객체!
function : 데이터 타입 중의 하나로, first-class function이 지원 됨
first-class function? 함수도 다른 데이터 타입처럼 변수에 할당이 가능 → 함수의 parameter, argument로 전달 가능 → 함수에서 return type으로도 함수에 return이 가능
Primitive Type = value로 값이 저장됨 ex) let name → ellie
Object Type = 실제로 object를 가리키는 reference 메모리에 저장됨 ex) const ellie 객체 할당 → reference → name / age → ellie / 20
bigInt : 길이의 제약 없이 정수를 다룰 수 있게 해주는 숫자형
- Chrome과 Firefox에서만 지원 됨 (fairly new, don't use it yet) - 정수 끝에 n을 붙이거나 함수 bigInt를 호출하면 됨
false : 0, null, undefined, naN, ' ' true : any other value
null : 변수를 선언하고 빈 값을 할당한 상태(빈 객체) unedfined : 변수에 값이 할당되지 않은 상태
symbol : 고유한 식별자가 필요하거나, 우선순위를 줌 주어진 string에 상관없이 고유한 식별자를 만들 때 사용되어 짐
*주의 심볼 바로 출력하게 될 때 에러가 발생하게 됨 .description을 이용해 string으로 변환하여 출력해야 함
5. Dynamic typing (동적타이핑, Dynamically typed language)
JS는 선언 시 어떤 타입인지 선언하지 않고 프로그램이 동작할 때 할당 타입이 변경될 수 있음
Last updated
Was this helpful?