[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);
}
- let은 es6부터 추가되었다.
- 값을 계속해서 변경할 수 있다.
- 타개발자분 블로그엔 scope가 가능하다고 돼있는데, 이 부분은 이해를 못하겠다ㅠㅠ
- IE에서는 지원이 되지 않기때문에 BABEL을 이용해서 개발한 후,
버전을 다운그레이드 시켜 변환하면 된다고 한다.
이제 IE는 신경쓰지 않아도 된다고..^^
2.var
- var는 es6전에 쓰던 키워드이다.
- 매우 flexible한 함수라 손쉽게 프로그래밍을 할 수 있다는 장점이 있지만, 값을 선언하기도 전에 쓸 수 있으므로 위험요소가 있다.
- Block Scope를 무시하기 때문에 어디든지, 아무데에서나 보인다는 것이 단점이다.
hoisting: 이것도더 찾아보기.. 찾아봐도 뭔소린지 모르겠아
엘리 말로는 hoisting: 호이스팅은 어디에 선언했냐에 상관없이 항상 제일 위에 선언을 끌어올려주는 것 이라는데 찾아보면 이렇게 말하면 틀린다고 한다. 좀 더 정답에 가까운 말을 찾아보자!!
+) 번외 설명
Block Scope
{
let name = 'ellie';
console.log(name);
name = 'hello';
console.log(name);
}
강의 링크: 드림코딩 by 엘리
타개발자분 정리 링크: ljh95.log
// let(added ES6)
{
let name = 'ellie';
console.log(name);
name = 'hello';
console.log(name);
}
버전을 다운그레이드 시켜 변환하면 된다고 한다.
이제 IE는 신경쓰지 않아도 된다고..^^
hoisting: 이것도더 찾아보기.. 찾아봐도 뭔소린지 모르겠아
엘리 말로는 hoisting: 호이스팅은 어디에 선언했냐에 상관없이 항상 제일 위에 선언을 끌어올려주는 것 이라는데 찾아보면 이렇게 말하면 틀린다고 한다. 좀 더 정답에 가까운 말을 찾아보자!!
{
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 type과 object 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는 선언할때 어떤 타입인지 선언하지 않고 프로그램이 동작할때 할당되는 값에 따라서 타입이 변경될 수 있음=다이나믹!
회사에서 마무리를 못해서 주말까지 끌고 왔더니 기억력이 좀 흐려진다..ㅠ 최대한 회사에서 짬이 만약 난다면 회사에서 포스팅할 수 있을정도로만 간단하게 쓰도록 하자!!
Author And Source
이 문제에 관하여([TIL]드림코딩 javascript (3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@huhyj97/TIL드림코딩-javascript-3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)