(javascript에서는 타입을 생략해도 된다, 타입스크립트에서는 타입도 간단히 써주면 된다)
if (name === 'elice'){console.log('yes')}
else{ console.log('no')}
console.log(name === 'elice' ? 'yes' : 'no')
switch (){
case:
}
for(let i =3 ; i> 0; i—){}
function showMessage(message, from = 'unknown') {
~~
}
showMessage('Hi'); // Hi , unknown
function printALl(...args){
// 1번
for (let i= 0; i< args.length; i++){
console.log(args[i]);
}
// 2번
for(const arg of args){
console.log(arg);
}
// 3번
args.foreach((arg) => console.log(arg));
}
pringAll('dream', 'coding', 'elle'); //...args = ['dream', 'coding', 'elle']
// 이러한 경우보다
function practice(user){
if(user.point > 10){
// 필요한 내용들
}
}
// 이렇게 미리 return을 해주는 것이 좋다
function practice(user){
if(user.point <= 10){
return;
}
// 필요한 내용들
}
function print () { // named function
console.log('print');
}
const print = function () { // 익명함수(anonymous function) , 아니어도 가능함
console.log('print');
};
const printYes = funtion (){ //anonymous function(익명함수)
console.log('yes!');
};
const printNo = function print(){ //named function(디버깅할 때 사용하기 위해 이름을 지어준다)
console.log('no!');
};
function randomQuiz(answer, printYes, printNo){// 함수를 인자로 받고
if(answer === 'love you'){
printYes();//조건에 따른 함수를 호출한다
} else {
printNo();
}
}
randomQuiz('worng', printYes, printNo);
randomQuiz('love you', printYes, printNo);
```
- arrow function(화살표 함수)
- 간단하게 익명함수를 만들 수 있다
- 한줄인 경우에는 {}쓰지 않고 return 을안써도 return이 되지만 여러 줄인 경우에는 {}와 return을 써줘야 한다.
- 예시
```jsx
const add = function(a,b){ // 보통의 익명함수를 사용하여 function expression
return (a+b);
};
const add = (a,b) => a+b; // arrow function을 사용하여 function expression
(function hell(){
console.log('IIFE');
}();
ES6에 도입
- class는 fields(변수)와 메소드(함수)로 이루어져 있다
- 간혹 fields(변수)로만 구성되엉 있는 class가 존재하는데 이를 data class라고 한다
- 클래스라는 틀을 사용해 객체(object)를 만든다
- 객체를 만들때는 new라는 키워드 사용
- 클래스에 get, set을 사용하는 이유
- 클래스를 사용하는 사람이 멍청한 값을 넣었을 때 일어나는 오류를 방지하기 위해서
- 예시 - get, set 동작과 오류가 난 경우
![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/255a0765-e209-4aed-86af-5e102cafeeca/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/255a0765-e209-4aed-86af-5e102cafeeca/Untitled.png)
- 예시 - 변수의 이름을 다르게 해주는 것이 좋다
![https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b45cd440-a785-43d0-923e-bcac7b780b23/Untitled.png](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b45cd440-a785-43d0-923e-bcac7b780b23/Untitled.png)
- public vs private
- publicField 는 어디서나 사용 가능
- privateField는 그 안에서만 사용 가능 변수 앞에 #을 붙인다
- 생긴지 별로 안되어서 사용하는 사례를 거의 볼 수 없음
- static
- 이녀석도 마찬가지로 생긴지 별로 안되어서 아직 많은 사람들이 사용 안함
- 상속과 다향성
- 자바와 거의 동일
- instanceOf
- object는 class를 통해 만들어진 instance이다
- instanceOf 는 왼쪽에 있는 object가 오른쪽 클래스로 만들어진 instance인지 알려준다
- 예시
```jsx
console.log(rectangle instanceOf Rectangle); // true
console.log(triangle instanceOf Rectangle); // false
```
1. Object는 key, value로 이루어져 있다.
2. 오브젝트를 만드는 방법은 2가지
- object literal
```jsx
const obj1 = {};
```
- object constructor
```jsx
const obj2 = new Object(); //클래스를 사용
```
3. 자바스크립트는 Runtime 중 동적으로 type이 결정된다
- Object에 뒤늦게 하나의 property를 추가하거나 삭제할 수 있다
- 이런 특성은 금방금방 하기에는 좋지만 나중에 유지보수를 할때 힘들거나 생각치도 못한 에러에 맞닥뜨릴 수 있다
- 다른 언어에서는 흔치 않은 특징이다(파이썬도 같은 특성인듯)
4. Object의 Property에 접근하는 방법
- . 문법과 computed properties
- . 문법은 내가 어떤 키를 써야할지 알 때 사용하고, computed properties는 내가 어떤 키를 써야할지 모를 때 사용한다.
```jsx
console.log(elite.name); // . 문법
console.log(elite['name']); // computed properties
```
- 이 때, propertiy는 String type 이어야 한다
5. JavaScript에는 property value short라는 기능이 있어 key와 value의 이름이 동일하다면 이것을 생략할 수 있다.
6. for ,,in vs for..of
- for (key in obj)
```jsx
for(key in ellie){
console.log(key);
}
// name
// age
// haJob
```
- for (value of iterable)
```jsx
const array = [1, 2, 4, 5]
for( vlaue of array){
console.log(value);
}
// 1
// 2
// 4
// 5
```
7. 객체 복사
- 과거에는 for..in을 사용하여 key를 불러와 하나씩 저장했었다
- 현재는 assign()을 사용한다
- 예시
```jsx
// user라는 Object를 복사하려고 한다
const user4 = Object.assign({},user);
// 이렇게도 가능하다
const user4 ={};
Object.assign(user4, user);
```
- 여러개를 합치려고 할 떄 같은 key가 존재하면 덮어씌운다.
```jsx
const fruit1 = {color: 'red');
const fruit2 = {color: 'blue', size: 'big'};
const mixed = Object.assign({}, fruit1, fruit2); // color는 blue로 된다
console.log(mixed.color);
console.log(mixed.size);
```
-
arr = [1,2,3,4,5];
const result = arr.slice(1,3) ;
console.log(result); // [2,3]
arr = [1,2,3,4,5,6];
arr.splice(1, 3, 1,2,3,4,5,6);
console.log(arr); // [1,1,2,3,4,5,6,5,6]
//arr 배열에서 1번째 인덱스부터 3개의 원소를 지우고 그 자리에 1,2,3,4,5,6 값을 모두 넣기
arr = [1,2,3,4];
console.log(arr.reverse()); // [4,3,2,1]
console.log(arr); // [4,3,2,1]
const result = students.find((student,index) => student.score === 90);
arr = '1, 2, 3, 4';
const result = arr.split(',', 2);
console.log(result) // [1, 2]