강의 링크: 드림코딩 by 엘리
타개발자분 정리 링크: ljh95.log
// let(added ES6)
{
let name = 'ellie';
console.log(name);
name = 'hello';
console.log(name);
}
hoisting: 이것도더 찾아보기.. 찾아봐도 뭔소린지 모르겠아
엘리 말로는 hoisting: 호이스팅은 어디에 선언했냐에 상관없이 항상 제일 위에 선언을 끌어올려주는 것 이라는데 찾아보면 이렇게 말하면 틀린다고 한다. 좀 더 정답에 가까운 말을 찾아보자!!
{
let name = 'ellie';
console.log(name);
name = 'hello';
console.log(name);
}
✔ 블록 안에다가 코드를 작성하면 블록 밖에서는 더 이상 블록 안에 있는 내용을 볼 수 없음
✔ 즉, 필요한 부분에서만 정의할 수 있음! 효율적
✔ 반대로 block밖에다가 변수를 바로 정의하는 애들
✔ 어디에서든지 볼 수 있음(실행되는 동안 항상 메모리에 탑재되므로 블록 안에 쓰는 것이 좋음)
🔒 가리키고 있는 포인터가 잠겨있음
❌ 값을 선언하고 할당한 뒤에는 변경 불가능
✔ 1. 변경이 불가능하므로 해킹으로부터의 위험을 막을 수 있음
2.동시에 값을 할당할 수 있는 thread로부터의 위험을 막을 수 있음
3.사람이 하는 실수를 줄일 수 있음
✔ 어떤 프로그래밍 언어든 primitive type과 object type 이렇게 두가지 타입으로 나뉜다
✔ 더이상 나눠질 수 없는, single 아이템을 말한다.
✔ ex) number, string, boolean, null, undefind, symbol
☝ 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);
☝ 다른 언어(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}`);
✔ 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}`);
let nothing = null;
console.log(`value: ${nothing}, type: ${typeof nothing}`);
let x;
console.log(`value: ${x}, type: ${typeof x}`);
// 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}`);
🏋️♂️ C나 JAVA와 달리 javascript는 선언할때 어떤 타입인지 선언하지 않고 프로그램이 동작할때 할당되는 값에 따라서 타입이 변경될 수 있음=다이나믹!
회사에서 마무리를 못해서 주말까지 끌고 왔더니 기억력이 좀 흐려진다..ㅠ 최대한 회사에서 짬이 만약 난다면 회사에서 포스팅할 수 있을정도로만 간단하게 쓰도록 하자!!