잘 몰랐던 개념정리..
// 변수는 프로그래밍 언어에서 데이터를 담고 있다.
number, string, boolean, null, undefined 가 있다.
이걸 제외한 모든 데이터 타입은 모두 오브젝트이다.
최소한 한두가지 다양한 데이터를 한군데 묶어놓은것이다.
(함수도 오브젝트!)
-> 메모리에는 name과 age라는 공간이 생기고 각각의 value가 값으로 들어간다. 각 위치의 레퍼런스가 존재
number, string, boolean 은 데이터 자체가 변수에 담겨있어서 데이터 자체가 복사되지만, 오브젝트는 오브젝트를 가리키고 있는 주소만 복사해온다.
변수를 선언하면 데이터를 담을 수 있는 공간이 할당 되고 이름이 할당된 공간을 가르킨다.
데이터가 작은 number, string, boolean, null, undefined 은 메모리에 그대로 들어오지만 오브젝트같이 뚱뚱한 변수는 어딘가에 할당되어있고 거기를 가르키는 reference라고 한다. (ref가 오브젝트에 들어가있음)
그래서 오브젝트를 통해서 데이터를 변경하면 오브젝트가 가르키고 있는 데이터가 엽데이트 된다.
let은 나중에 값을 변경할 수 있다.
const는 선언 이후에 값을 변경할 수 없다.
const obj = {
name: 'ellie',
age: 5,
}
obj ={
name: 'james',
age: 7;
}
이렇게 못함. obj가 reference로 잠겨있다.
하지만 obj.name 으로 name의 값은 변경 가능.
ref가 가르키는 곳의 값을 변경시켜 가져오기 때문
함수를 선언할 때 function을 쓴다.
function name(a, b) {
return a + b;
}
name이라는 함수는 a,b 인자를 받고 a+b를 반환
|| (or) 작성할때는 하나라도 true 이면 true를 반환 하기 때문에 간단한 값을 앞으로 보내는게 좋다.
&& (and) 작성을 할 때에도 하나라도 false이면 false이기 때문에 간단한 값을 앞으로 보내는게 좋다.
===은 타입의 동일성도 보기때문에 ==보다는 ===을 쓰는게 좋다.
switch operater
const browser = 'IE';
switch (browser) {
case 'IE':
console.log('go away!');
break;
case 'Chrome';
case 'Firefox';
console.log('love you!');
break;
default;
console.log('same all!');
break;
}
browser가 IE일때 구문을 출력
같은 명령을 실행하는 것끼리는 한번만 써줄 수 있음.
while 문
let i = 3;
while (i>0) {
console.log(`while: ${i}`);
i--;
}
do while 문
do {
console.log(`do while: ${i}`);
i--;
} while (i >0);
while문은 조건이 맞으면 실행
do while 문은 일단 실행하고 조건이 안맞으면 실행을 멈춘다.
for loop
// for loop, for(begin; condition; step)
for (i = 3; i > 0; i--) {
console.log(`for: ${i}`);
}
for (let i = 3; i > 0; i = i -2) {
console.log(`${i}`);
}
begin은 처음 한번만 호출한 후 조건이 안맞을때까지 실행한다.
if문은 true여야만 실행된다.
let num; 이렇게 선언후 값을 넣지 않으면 undefined가 할당되어 있다.
num && console.log(num);
이런식으로 AND연산자를 사용해서 num이 값이 있으면 뒤를 실행하고 없으면 실행 안하게 만들 수 있다
class Counter {
constructor() {
this.counter = 0;
}
increase() {
this.counter++;
console.log(this.counter);
}
}