본문 바로가기

TIL

TIL

Chapter 2. 프로그래밍 기초 주차

 

4.23 - 2일차 

 

1.es6 문법
-ECMAScript 6 (ES6)는 자바스크립트 버전 중 하나로 ,2015년 발표됨.
-이전 버전 ES5에서 새로운 문법과 기능 도입하여 보다 쉽고 효율적으로 코드를 작성할 수 있도록 개선함.
-2015년도에 대규모 문법적 향상 및 변경이 있었기 때문에, ES6가 항상 언급되곤 함

 

(1) let, const

- 변수 선언

- 선언 : 변수명을 자바스크립트 엔진에 알리는 것

- 할당 : 변수에 값을 지정하는 것 ( = 할당연산자)

let : 재할당 가능 ,재선언 불가

const : 재할당, 재선언 불가 

var : 재선언, 재할당 가능

 

(2) 화살표 함수 (arrow function)                        

     ( ) => { }

function add () {
}
var add = function () {
}
var add = () => {
    return 1;
}
var add = () => 1;         //return 값이 하나일떄

var add = x => 1;

 

(3) 삼항 연산자    

// condition ? true인경우 : false인 경우               //콘솔

console.log(true ? "참" : "거짓");                            참
console.log(false ? "참" : "거짓");                          거짓
console.log(1===1 ? "참" : "거짓");                        참 
console.log(1 !== 1 ? "참" : "거짓");                       거짓

 

 

(4) 구조분해할당 : destructuring(de + structure + ing)
de = not
structure = 구조
배열이나, 객체의 속성

1) 배열의 경우

let [value1, value2] =[1, "new"];
console.log("1",value1);
console.log("2",value2);        // 1,new
 
 let arr = ["value1","value2","value3","value4"];
let [a, b, c, d] = arr;

console.log(a);
console.log(b);
console.log(c);
console.log(d);

 

2) 객체의 경우

  let user = {
    name: "nbc",
     age: 30,
 };
let {name, age} = {
    name: "nbc",
    age: 30,
};

console.log("name =>",name);  //string          name => nbc
console.log("age =>",age);   //number            age => 30
// 새로운 이름으로 할당
let user = {
         name: "nbc",
          age: 30,
          brithday: "yesterday",
};

//  let {name: newName, age: newAge} = user;
//  console.log("newName =>", newName);
//  console.log("newAge =>", newAge);

let {name, age, brithday = "today"} = user;
console.log(name);
console.log(age);
console.log(brithday);                  //yesterday로 나옴 

 

(5)단축 속성명 (property shorthand)

const name = "nbc";
const age = "30";

//key-value
const obj = {name, age};
const obj1 = {name: name ,age: age};

 

(6) 전개 구문 (spread operator)

// destructuring과 함께 가장 많이 사용되는 es6 문법 중 하나!
let arr = [1, 2, 3];

let newArr = [...arr,4];
console.log(arr);                          [ 1, 2, 3]
console.log(newArr);                   [ 1, 2, 3, 4]

//객체
let user ={
    name: 'nbc',
    age: 30,
};

let user2 = {...user};

console.log(user);                            { name: 'nbc', age: 30 }                                                        
console.log(user2);                            { name: 'nbc', age: 30 }

 

(7) 나머지 매개변수 (rest parameter)

function exampleFunc(a, b, c, ...args) {
    console.log(a, b, c);
    console.log(...args);       //(...args)에서 ...넣지 않는다면 [4, 5, 6, 7]
}
exampleFunc(1, 2, 3, 4, 5, 6, 7);

(8) 템플릿 리터럴 (Template Literal)

const testValue = "안녕하세요!";
console.log(`Hello World ${testValue}`);   //` ` -> 빽틱 //콘솔 => Hello World 안녕하세요!

console.log(`
     Hello
          My name is Javascript!!
       
       Nice to meet you!!
`);

 

2. 일급 객체로서의 함수

일급객체 - 다른 객체들에 일반적으로 적용 가능하다
함수를 매우 유연하게 사용 가능 
( ); - 실행한다
{ } 중괄호안에서의 this 본인 객체 자신을 가르킨다

(1) 변수에 함수를 할당할 있다.
함수가 마치 값으로 취급된다.
함수가 나중에 사용될 있도록 조치가 되었다.
const sayHello = function () {
    console.log("Hello!");
};

 

(2) 함수를 인자로 다른 함수에 전달할 수 있다.
2 - 1. 콜백함수 : 매개변수로써 쓰이는 함수
2 - 2. 고차함수 : 함수를 인자로 받거나 return하는 함수

function callFuntion(func) {
    //매개변수로 받은 변수가 사실, 함수다.//
    func();
}

const sayHello = function () {
    console.log("Hello!");
};

callFuntion(function(){
    console.log("Hello!");
});

 

(3) 함수를 반환할 수 있다.

function createAdder(num) {
    return function (x) {
        return x + num;
    };
}

const addFive = createAdder(5);
console.log(addFive(10));                      //15

 

ex.2

const person = {
    name: 'John',
    age: 31,
    isMarried: true,
    // sayHello: () => {
    //     console.log(`Hello, My name is ${this.name}`);  //**Hello, My name is undefined 화살표함수는 this를 바인딩하지 않는다.
    // },
     sayHello: function() {
         //console.log("Hello, My name is" + this.name);
         console.log(`Hello, My name is ${this.name}`)   //**${} 중괄호로 묶을 것!!!
        },
};

person.sayHello();                          //Hello, My name is John

 

3. Map 과 Set 

 

JS -> 객체, 배열 : 많고, 다양하고, 복잡한 프로그램을 만들어 왔다
그럼에도, 현실세계 반영하기는 좀 많이 어려웠음!
Map, Set 추가적인 자료구조가 등장함!
Map, Set의 목적 : 데이터의 구성, 검색, 사용을 효율적으로 처리 > 기존의 객체 또는 배열보다
(1) Map
- Key / Value
- Key에 어떤 데이터타입(유형)도 다 들어올 수 있다.
- Map은 키가 정렬된 순서로 저장되기 때문이다.
- 기능
  > 검색, 삭제, 제거, 여부 확인

const myMap = new Map();
myMap.set('key','value');

myMap.get('key')
반복 ...!! -> method : keys, values, entries

const myMap = new Map();
myMap.set("one", 1);
myMap.set("two", 2);
myMap.set("three", 3);

console.log(myMap.keys());
for (const key of myMap.keys()) {         //one  , two ,three
    console.log(key);
}

console.log(myMap.values());
for (const value of myMap.values()) {        //1, 2, 3
    console.log(value);
}

console.log(myMap.entries());
 for  (const entry of myMap.entries()) {             //  ['one',1]  ['two',2]  ['three',3]              출력
    console.log(entry);
 }

 

console.log(myMap.size); // map의 사이즈(길이)
console.log(myMap.has("two")); //key 기반 검색                      //3 , true

 

   (2)Set
- 고유한값을 저장하는 자료구조다.
값만 저장한다.
키를 저장하지는 않는다.
- 값이 중복되지 않는 유일한 요소로만 구성된다.
값 추가, 검색, 값 삭제, 모든 값 제거, 존재 여부 확인

const mySet = new Set();
mySet.add("value1");
mySet.add("value2");
mySet.add("value3");
mySet.add("value5");
mySet.add("value8");

console.log(mySet.size);                  //5
console.log(mySet.has("value1"));        //true
console.log(mySet.has("value2"));        //true
console.log(mySet.has("value4"));       //false
// Iterator, 반복했던 그 친구.
for (const value of mySet.values()) {
    console.log(value);
}

 

- 오늘의 하루 -

하나하나 들을 때는 잘 이해가 됐는데 

들은 내용을 활용해서 과제(숙제)를 풀려고 하니 시작방향과 무엇을 활용해야 할지 막막했다..

*최대한 많이 써보고 익숙해질 것!!

 

📢튜터님의 조언 

- 모르는 내용은 리스트로 만들어서 체크해놓기 (2주차 ,3주차 듣다보면 반복되면서 이해될 수 있음 = 일단 진도나가기)
- 듣다가 앞에서 이해못했던 부분이 나와 막힌다면 그때 다시 듣기
- 혼자 해결이 되지않는다면 팀원에게 질문하거나 튜터님께 질문
- 일단 쭉 들어보기 (체크된 부분 확인하면서 다시 듣거나 강의자료 참고하기)

 

🙄내일은 강의 최대한 들을 수 있는 만큼 듣고 오후 3시에 팀원들과 개인과제 시작해보기

'TIL' 카테고리의 다른 글

TIL  (0) 2024.04.27
TIL  (0) 2024.04.24
TlL  (0) 2024.04.23
TIL  (0) 2024.04.19
TIL  (0) 2024.04.18