let a = b;
변수
바뀔 수 있는 값
한 번 선언한 변수 이름은 똑같은 이름으로 또 선언할 수 없다. (블록 스코프에선 또 다르다.)
상수
값이 고정적 (수정 X, read only)
(+) 최신 문법으로 작성 후 '바벨' 이용해 구형 브라우저에서도 사용할 수 있게끔 변환 작업을 한다.
a = 4;
a += 3;
a = a + 3;
참, 거짓 가리기 위해 사용한다.
const value = !((true && false) || (true && false) || !fasle)
// 1. 괄호 안의 논리 연산자 우선 순위 1번 ! -> ! 연산 먼저 처리된다.
// !((true && false) || (true && false) || true)
// 2. () 안의 내용 중 &&부터 처리된다.
// !(false || false || true)
// 3. 괄호 안의 나머지 연산들이 처리된다.
// !(true)
// 4. 마지막 ! 연산 처리
// false
const device = 'iphone';
//switch (확인하고 싶은 것) {}
switch (device) {
case 'iphone':
console.log('아이폰 출력!');
break; // break = "비교 끝났다!"
// break 없으면 다음 case까지 실행함.
case 'galaxy':
console.log('갤럭시 출력!');
break;
default: // 어떤 경우에도 해당하지 않을 때 dafault 실행
console.log('모르겠네요');
// default엔 break; 안 붙여도 ok
}
return
결과값으로 반환해준다.
return 실행시 함수 종료
=> return 이후 코드 실행 X
return으로 문자열 반환 가능하다.
name = 'bora';
fuction hello (name){
return `제 이름은 ${name}입니다.`;
}
const num = 5;
//const add = (파라미터) => { ~실행 코드 ~}
// 코드 길 땐 { } 붙여야 함.
const add = (a, b) => {
return a+b;
}
// 이런 식으로도 사용 가능
// 화살표 함수의 유일한 문장이 'return'일 때 'return'과 중괄호 {} 를 생략할 수 있다.
const add = (a, b) => a+b;
let name = 'mark';
let month = 8;
let date = 2;
console.log(`제 이름은 ${name} 이고, 오늘은 ${month}월 ${date}입니다. `);
같은 종류의 정보 집합이라 볼 수 있다.
한 상수/변수 안에 여러가지 정보 담는다.
// keyname : value -> : 로 연결.
// ; 아닌 ,로 연결
const 객체이름 = {
keyname : 'value',
keyname : 900 ....
}
const ironMan = {
name : '토니 스타크',
actor : '로버트 다우니 주니어',
'actor nickname' : '아이언맨'
// keyname엔 공백 X, 공백 O 경우 'keyname' 이렇게 "" 따옴표를 씌워줘야 한다.
}
console.log(ironMan.name);
console.log(ironMan["actor nickname"]);
const { 사용할keyname1, 사용할keyname2 ... } = 해당object;
console.log(${keyname});
// 이런 식으로 사용이 가능하다.
1. 함수에서도 비구조 할당을 파라미터로 사용이 가능하다.
const ironMan = {
name : '토니 스타크',
actor : '로버트 다우니 주니어',
'actor nickname' : '아이언맨'
}
function print({name, actor}){
const text = `${actor}는 ${name}으로 출연했습니다.`;
console.log(text);
}
print(ironMan);
//const { alias, name, actor } = hero;
// 상수/변수 {사용할keyname1, 사용할keyname2 ... } = 해당객체이름;
2. 상수, 변수로 출력
const {name} = ironMan;
console.log(name);
// 상수 name의 값이 '토니 스타크'로 할당됨.
// name = 'bora'; <- name이 상수이기 때문에 TypeError: "name" is read-only 오류가 난다.
const dog = {
name: "멍멍이",
sound: '멍멍!',
say: function() {
console.log(this.sound);
// dog 객체 안에서의 this는 속해있는 dog를 가리킨다.
}
};
const cat = {
name: '야옹이',
sound: '야옹~'
};
cat.say = dog.say;
/* dog.say 뒤에 () <- 안 붙었기 때문에 함수 실행 값이 아닌 함수 그 자체 function() {
console.log(this.sound);
} 가 온다.
cat.say = 는 cat 객체에 say라는 keyname을 생성하게 된다.
따라서 cat.say = function() {
console.log(this.sound);
}
이렇게 생성된다.
*/
dog.say(); // '멍멍!'
cat.say(); // '야옹~'
const catSay = cat.say;
/* function() {
console.log(this.sound);
}
이 함수를 상수 catSay에 할당한 것.
(할당만 함! () <- 안 붙였기 때문!)
*/
catSay();
// 함수가 할당된 상수를 실행시켜도 해당 함수 안에 this가 속해있는 곳이 없기 때문에 에러가 난다.
Getter 함수와 Setter 함수를 사용하게 되면 특정 값을 바꾸려고 하거나, 특정 값을 조회하려고 할 때 우리가 원하는 코드도 같이 실행 시킬 수 있다.
setter
"값 설정"
setter 함수 실행시, 함수이름(파라미터값) <- 이렇게 해줘야 한다.
Setter 함수를 설정 할 때에는 함수의 앞부분에 set 키워드를 붙인다.
Setter 함수를 설정 방법
: ex) numbers.a = 5
a라는 setter 함수의 파라미터에 5가 들어간다.
// getter, setter 함수 이름은 변수와 완전히 같으면 안 된다.
// getter 함수 선언 방법
// 객체이름.getter함수이름
console.log(dog.name);
// setter 함수 선언 방법
// 객체이름.setter함수이름 = setter함수의 파라미터 값;
dog.name = '뭉뭉이';
// numbers 라는 객체
const numbers = {
// 변수 설정시, get, set 함수와 완전히 똑같으면 안 된다. _a, a <- 이런 식으로 달라야 함.
_a: 1,
_b: 2,
sum: 3,
calculate() {
console.log('calculate');
this.sum = this._a + this._b;
},
// _a값 조회
get a() {
return this._a;
},
// _b값 조회
get b() {
return this._b;
},
set a(value) {
console.log('a가 바뀝니다.');
// value값을 _a값으로 설정한다.
this._a = value;
this.calculate();
},
set b(value) {
console.log('b가 바뀝니다.');
// value값을 _a값으로 설정한다.
this._b = value;
this.calculate();
}
};
console.log(numbers.sum);
numbers.a = 5;
numbers.b = 7;
numbers.a = 9;
// 바뀐 a,b의 값이 그대로 적용 되서 또 바꾸지 않는 이상 sum 실행시 계속 같은 값만 출력된다.
console.log(numbers.sum);
console.log(numbers.sum);
console.log(numbers.sum);
여러 개의 항목이 들어 있는 리스트
for
for (let item(배열원소) of array)
for (let item(keyname) in object)
while
const doggy = {
//묶음 1 (내가 보기 쉽게 '묶음'이라고 별명 붙임)
name : '멍멍이',
//묶음 2
sound : '멍멍',
//묶음 3
age : 2
}
// 각 묶음들을 배열로 만들어 출력.
// 총 3개의 배열이 만들어진다.
// [[1],[2],[3]]
Object.entries(doggy);
// doggy 객체의 키 이름들만 뽑아서 배열로
Object.keys(doggy);
// doggy 객체의 키 값들만 뽑아서 배열로
Object.values(doggy);
continue
continue 이후 코드 실행 X, 컨티뉴 이전 코드(반복문 - 다음 조건)로 이동해 그 부분부터 다시 실행한다.
break
break 있는 부분에서 바로 종료.
이후 코드 실행 X
array.forEach()
array.map() ⭐️⭐️⭐️
array.indexOf(원소)
해당 원소의 인덱스 번호 알려준다.
array.findIndex(function)
array.find(function)
함수 실행 후 해당 원소(객체 / 원소 ...)의 값을 출력.
https://learnjs.vlpt.us/basics/09-array-functions.html
(예시 모음)
const numbers = [10, 20, 30, 40];
const sliced = numbers.slice(0, 2); // 0부터 시작해서 1까지 출력.
console.log(sliced); // [10, 20]
// 기존 배열은 그대로
console.log(numbers); // [10, 20, 30, 40]