[TIL]드림코딩 javascript (3)

3. Javascript data types, Variable types


오늘은 드림코딩 3강을 들었다. 들을 시간은 많았는데 너무 어려워서.. 계속 반복 반복을 하다 보니 퇴근시간이 다 돼서야 정리하고 있다 ㅋㅋㅋㅋㅋ 어렵기도 하고 용어가 생소하다 보니 다른 분의 벨로그를 같이 참고하고 포스팅하려고 한다.

강의 링크: 드림코딩 by 엘리
타개발자분 정리 링크: ljh95.log

1.let

// let(added ES6)
{
    let name = 'ellie';
    console.log(name);
    name = 'hello';
    console.log(name);
}
  1. let은 es6부터 추가되었다.
  2. 값을 계속해서 변경할 수 있다.
  3. 타개발자분 블로그엔 scope가 가능하다고 돼있는데, 이 부분은 이해를 못하겠다ㅠㅠ
  4. IE에서는 지원이 되지 않기때문에 BABEL을 이용해서 개발한 후,
    버전을 다운그레이드 시켜 변환하면 된다고 한다.
    이제 IE는 신경쓰지 않아도 된다고..^^

2.var

  1. var는 es6전에 쓰던 키워드이다.
  2. 매우 flexible한 함수라 손쉽게 프로그래밍을 할 수 있다는 장점이 있지만, 값을 선언하기도 전에 쓸 수 있으므로 위험요소가 있다.
  3. Block Scope를 무시하기 때문에 어디든지, 아무데에서나 보인다는 것이 단점이다.

hoisting: 이것도더 찾아보기.. 찾아봐도 뭔소린지 모르겠아
엘리 말로는 hoisting: 호이스팅은 어디에 선언했냐에 상관없이 항상 제일 위에 선언을 끌어올려주는 것 이라는데 찾아보면 이렇게 말하면 틀린다고 한다. 좀 더 정답에 가까운 말을 찾아보자!!

+) 번외 설명

Block Scope

{
    let name = 'ellie';
    console.log(name);
    name = 'hello';
    console.log(name);
}

✔ 블록 안에다가 코드를 작성하면 블록 밖에서는 더 이상 블록 안에 있는 내용을 볼 수 없음
✔ 즉, 필요한 부분에서만 정의할 수 있음! 효율적

Global Scope

✔ 반대로 block밖에다가 변수를 바로 정의하는 애들
✔ 어디에서든지 볼 수 있음(실행되는 동안 항상 메모리에 탑재되므로 블록 안에 쓰는 것이 좋음)

😀 결론: Block안에다 코드를 작성하는 것이 좋다~


3. Constants

🔒 가리키고 있는 포인터가 잠겨있음
❌ 값을 선언하고 할당한 뒤에는 변경 불가능
✔ 1. 변경이 불가능하므로 해킹으로부터의 위험을 막을 수 있음
2.동시에 값을 할당할 수 있는 thread로부터의 위험을 막을 수 있음
3.사람이 하는 실수를 줄일 수 있음

+)번외 설명

Mutable Type: 값을 변경할 수 있는 함수(let)

Immutable Type: 값을 할당한뒤, 변경할 수 없는 함수(const)

😀 결론: 웬만하면 const로 작성하는 것이 좋다!


4. Variable types

✔ 어떤 프로그래밍 언어든 primitive typeobject type 이렇게 두가지 타입으로 나뉜다

primitive type

✔ 더이상 나눠질 수 없는, single 아이템을 말한다.
✔ ex) number, string, boolean, null, undefind, symbol

object type

4-1. Number

☝ javascript는 C언어나 JAVA와 달리 값의 크기, 소수점에 따라 함수를 변경할 필요없이
number 하나면 다 된다!!


// 다른 프로그래밍 언어와 달리 17이든 17.1이든 number 하나로 통용해서 표현할 수 있어
생략하기도 하는 것 같다.

const count = 17;
const size = 17.1;
console.log(`value: ${count}, type: ${typeof count}`);
console.log(`value: ${size}, type: ${typeof size}`);

// number - speical numeric values:
const infinity = 1 / 0;
const negativeInfinity = -1 / 0;
const nAn = 'not a number' / 2;
console.log(infinity);
console.log(negativeInfinity);
console.log(nAn);

4-2. String

☝ 다른 언어(Java, C)와 다르게 한 문자든 문장이든 string이라는 하나의 타입이다

const char = 'c';
const brendan = 'brendan';
const greeting = 'hello' + brendan;
console.log(`value: ${greeting}, type: ${typeof greeting}`);
const helloBob = `hi ${brendan}!`; //template literals (string)
console.log(`value: ${helloBob}, type: ${typeof helloBob}`);

4-3. boolean

✔ false: 0, null, undefined, NaN, ''
✔ true: any other value

const canRead = true;
const test = 3 < 1; //false
console.log(`value: ${canRead}, type: ${typeof canRead}`);
console.log(`value: ${test}, type: ${typeof test}`);

4-4. null

let nothing = null;
console.log(`value: ${nothing}, type: ${typeof nothing}`);

4-5. undefined

let x;
console.log(`value: ${x}, type: ${typeof x}`);

4-6. Symbol

// symbol, create unique identifiers for objects(맵, 자료구조, 동시다발적인 코드에서 우선순위를 주고 싶을 때)
const symbol1 = Symbol('id');
const symbol2 = Symbol('id');
console.log(symbol1 === symbol2);

//symbol은 같은 id를 줘도 각각 다르게 고유한 symbol

//같은 symbol로 만들고 싶을 때
const gSymbol1 = Symbol('id');
const gSymbol2 = Symbol('id');
console.log(gSymbol1 === gSymbol2); //true
console.log(`value: ${symbol1.description}, type: ${typeof symbol1}`);

5. Dynamic typing: dynamically typed language

🏋️‍♂️ C나 JAVA와 달리 javascript는 선언할때 어떤 타입인지 선언하지 않고 프로그램이 동작할때 할당되는 값에 따라서 타입이 변경될 수 있음=다이나믹!

회사에서 마무리를 못해서 주말까지 끌고 왔더니 기억력이 좀 흐려진다..ㅠ 최대한 회사에서 짬이 만약 난다면 회사에서 포스팅할 수 있을정도로만 간단하게 쓰도록 하자!!

좋은 웹페이지 즐겨찾기