[TIL] 19-09-23

|

callback함수

비동기 함수

blocking vs. non-blocking

전화와 문자로 비유할수 있음

동기 비동기

커피주문을 예로 들수 있다.

forEach함수

function waitSync(ms) {
    var start = Date.now();
    var now = start;
    while(now - start < ms) {
      now = Date.now();
    }
}  // 현재 시각과 시작 시각을 비교하여 ms 범위 내에서 무한 루프를 도는 blocking 함수입니다

function drink(person, coffee) {
    console.log(person + '' + coffee + '를 마십니다');
}
function orderCoffeeSync(coffee) {
    console.log(coffee + '가 접수되었습니다');
    waitSync(2000);
    return coffee;
}

let customers = [{
    name: 'Steve',
    request: '카페라떼'
}, {
    name: 'John',
    request: '아메리카노'
}];

// call synchronosly
customers.forEach(function(customer) {
    let coffee = orderCoffeeSync(customer.request);
    drink(customer.name, coffee);
});
function waitAsync(callback, ms) {
    setTimeout(callback, ms); //특정 시간 이후에 callback 함수가 실행되게끔 하는 브라우저 내장 기능 
}

function drink(person, coffee) {
    console.log(person + '' + '를 마십니다');
}

let customers = [{
    name: 'Steve',
    request: '카페라떼'
}, {
    name: 'John',
    request: '아메리카노'
}];

function orderCoffeeAsync(menu, callback) {
    console.log(menu + '가 접수되었습니다');
    waitAsync(function() {
        callback(menu);
    }, 4000);
}

// call asynchronously
customers.forEach(function(customer) {
    orderCoffeeAsync(customer.request, function(coffee) {
        drink(customer.name, coffee);
    });
});

[JavaScript] parameter(매개변수) 와 argument(argument)

|

parameter(매개변수) argument(전달인자)

//예제  집으로가는 시간 구하기  거리/시간
let timeToGoHome = function(distance, speed) {  //여기가 매개변수parameter
    let time = distance / speed;
    console.log(time);
}

timeToGoHome(300, 15) //여기가 전달인자argument
<-- 20

parameter와 argument가 자주 헛갈린다 개념을 잘 잡아놓자.

[JavaScript] 3항 조건 연산자

|

3항 조건연산자

(조건) ? exp1 : exp2
() 안에 조건이 참이면 exp1  실행되며 거짓이라면 exp2  실행된다.


IF 문으로 표현한 조건문

if (a > b){
  c = 10;
}else {
  c = 20;
}

위의 식을 조건 연산자로 고쳐 쓰면 아주간단해진다.
(a > b) ? c = 10 : c = 20;

이 간단한것을… ㅋㅋㅋㅋ 복잡해보여도 복잡하지 않다 천천히 들여다 보자

[TIL] 19-09-21

|

parameter(매개변수) argument(전달인자)

//예제  집으로가는 시간 구하기  거리/시간
let timeToGoHome = function(distance, speed) {  //여기가 매개변수parameter
    let time = distance / speed;
    console.log(time);
}

timeToGoHome(300, 15) //여기가 전달인자argument
<-- 20


매개변수와 전달인자가 자주헛갈린다. 
개념을 잘잡아놓자!

3항연산자

(조건) ? exp1 : exp2
() 안에 조건이 참이면 exp1  실행되며 거짓이라면 exp2  실행된다.


IF 문으로 표현한 조건문

if (a > b){
  c = 10;
}else {
  c = 20;
}

위의 식을 조건 연산자로 고쳐 쓰면 아주간단해진다.
(a > b) ? c = 10 : c = 20;

array.slice(-n) => 뒤에부터 n개의 element 가 출력된다

let arr = [1, 2, 3, 4, 5]

arr.slice(-3) //<-- [3,4,5]

[JavaScript] template 태그 사용하기

|

오늘은 template tag를 사용해서 동적인 화면을 만들어보았다.

template tag실습

  • 윤은채 template tag실습

    이제 진짜 querySelector를 이해했다.

    /*
    1. 템플릿을 가져와야 합니다.
    2. 템플릿 내용을 클론 합니다.
    3. 클론한 엘리먼트에 내용을 채워준다.
    4. 클론한 엘리먼트를 #comments에 추가한다.
    */
      
    let target = document.querySelector('#comments');
    let template = document.querySelector('#commentTemplate');
      
    for(let i=0; i<3; i++) {
        
      //여기서 오타가 있었어서 계속 못풀어내고있었다 importNode 기억하겠다..
      let newComment = document.importNode(template.content, true);  
         
      newComment.querySelector(".username").textContent = '사용자' + i;
      newComment.querySelector(".body").textContent = '내용' + i;
      
      target.appendChild(newComment);
    }
    

    이코드는 기본틀이기 때문에 외워야한다. 이해를 하면 딱히 외울것도 없지만…

    문제를 잘게 쪼게는 연습을 계속 들이자.

내가 실수한것

오타 였다. 뭐가 계속 화면이 안떠서 시간이 엄청 오래걸렸는데 나중에 보니까 importNode를 잘못썻더라… 이렇게 허무하다니;;;; 오타조심하자!!!