Small Step

[JS] 공부 - 엘리코딩 JS 3 본문

코딩/JS

[JS] 공부 - 엘리코딩 JS 3

Esunn 2021. 1. 15. 12:46

youtu.be/OCCpGh4ujb8

 

이 영상을 보고 공부했습니다.

 

 

변수  Variable

자바스크립트 ES6부터는 let키워드를 사용하여 변수를 만든다.

let myname = 'small_step';

 

Block Scope

블럭을 이용하여 코드를 작성하면 블럭안의 코드를 볼 수 없다.

{
let myname = 'hello';
console.log(myname);
myname = 'vayne';
console.log(myname);    
}

console.log(myname);

 

다음과 같이 블럭안에 선언된 변수를 호출하면 

 

console.log가 되지 않는 모습이다.

 

블럭안에 있지 않고 밖에 선언된 변수를 global scope라고 한다.

어느 곳에서 나 접근이 가능하다.

 

글로벌한 변수들은 메모리에 계속 남아있다.

 

let을 사용하여 변수를 선언하자!!

 

var를 안 쓰는 이유?

var를 쓰면 값을 할당하지 않고도 출력이 되고, 선언하기 전에도 출력이 되는 이상한 현상이 일어난다.

이것을 var hoisting이라고 한다.

어디에 선언을 했는지 상관없이 선언한 것을 맨 위로 끌어올리는 것

move declaration from bottom to top

 

또 var는 Block Scope가 없다.

블럭의 영향을 받지 않는다.

 

변수 선언에는 let을 쓰자!!

 

상수  Constant

한 번 할당하면 값이 바뀌지 않는다.

값이 바뀌는 데이터를 Mutable라고 하고 변경이 불가능한 데이터 타입은 Immutable라고 한다.

상수는 값이 바뀌지 않는 Immutable이다.

 

값이 바뀌지 않는 상수를 쓸 때 얻을 수 있는 장점

1 보안 : 값이 바뀌지 않아서 보안에 도움이 됨

2 쓰레드 들이 동시에 값을 바꾸면 위험한 일이 일어날 수 있는데 상수는 바뀌지 않아서 안전

 

따라서 웬만하면 상수를 만들어서 쓰도록 하자!

 

 

데이터 타입  Variable type

어떤 데이터 타입이든 다음과 같이 분류된다.

primitive는 아이템이 하나인 것으로 숫자 string(문자열), boolen, null, undefined 등이 포함된다.

한 박스로 관리할 수 있게 해주는 것이 object(객체)이다.

 

자바스크립트에서는 function도 데이터 타입인데, first-class function은 function도

데이터 타입에 포함되어 변수처럼 쓸 수 있다는 뜻이다.

 

 

숫자 number

 

c언어와 자바에는 숫자만 해도 int, long, double, float 등등 엄청 많은 데이터 타입이 있다.

하지만 자바스크립트에서는 number 하나로 숫자 데이터 타입이 결정된다.

 

 

자바스크립트에서는 데이터 타입을 정의하지 않고도 선언이 가능하다.

let a = 12;
let b = 1.2;

 

그러나 타입 스크립트에서는 데이터 타입을 써줘야 한다.

let a: number = 12;
let b: number = 1.2;

 

 

특별한 숫자 값들

const infinity = 1/0;
const negativeInfinity = -1/0;
const nAn = 'not a number' / 2;

 

 

 

자바스크립트는 -2의 53승부터 2의 53승까지 표현이 가능한데

숫자 뒤에 n을 붙이면 bigInt가 된다.

최근에 나온 개념이기에 크롬과 파이어폭스에서만 사용 가능하다.

 

 

문자열 string

string

자바스크립트에서는 한 가지의 글자나 여러 가지 글자나 string타입으로 할당된다.

+ 기호를 사용해 문자열 합치기도 가능하다.

 

 

const brendan = 'brendan';


// ` template literals
console.log(`hi ${brendan}`);

`를 사용하여 문자열 안에 바로 문자열을 넣을 수 있다.

 

 

참과 거짓 bloolean

먼저

false값은 0, null, undefined, NaN, ' ' 등이 포함되어있고

true는 나머지 모든 값들이다.

 

 

null, undefined

이 둘은 서로 비슷한 거 같으면서도 다르다.

null은 선언된 변수 안에 null이라는 값이 있는 것이지만 undefined는 아예 

값이 할당이 되지 않은 상태이다.

 

symbol

고유한 식별자가 필요할 때 쓴다.

같은 문자열이 할당되어있어도 고유하게 식별이 된다.

 

const symbol1 = Symbol('id');
const symbol2 = Symbol('id');

 

symbol은 그냥 출력하면 오류가 나니. description을 사용하여 문자열로 변환하고 출력해야 한다.

 

 

 

Dynamic typing

자바스크립트는 선언할 때 데이터 타입을 정하지 않고 할당된 값에 따라 데이터 타입이 정해진다.

 

let text = 'hello'; // string타입

text = 1; // number타입

text = '7' + 5; // 문자와 숫자를 더해서 string타입

text = '8' / '2'; // 숫자를 나눌 때 쓰는 나누기가 있으니 number타입

 

객체 object

const myblog = { name : 'small_step', post : 20};
myblog.post = 25;

객체 안에 변수를 정의할 수 있다.

이 변수들은 객체의 이름을 이용해서 접근하여 값을 할당할 수 있다.

Comments