관리 메뉴

CASSIE'S BLOG

if문은 콜백함수 안에... 본문

PROGRAMMING/기타

if문은 콜백함수 안에...

ITSCASSIE1107 2023. 10. 26. 22:18

 

 

계속 에러

if문이 콜백함수 안에 들어가야한다.

 

JavaScript에서 if 문을 콜백 함수 안에 넣는 이유는 이 코드가 비동기적으로 동작하기 때문입니다.

readline 모듈을 사용하여 사용자의 입력을 받을 때, 이 입력은 비동기적으로 처리됩니다. 이는 사용자가 언제 입력을 완료할지 예측할 수 없다는 것을 의미합니다. 따라서 rl.on('line', ...) 이벤트 리스너는 사용자가 엔터 키를 누르는 즉시 실행되며, rl.on('close', ...) 이벤트 리스너는 사용자가 입력을 끝내고 프로그램을 종료할 때 실행됩니다.

만약 if 문을 콜백 함수 밖에 두면, 그것은 비동기적인 처리와 별개로 실행될 것이며, 입력이 아직 모두 완료되지 않았을 수 있습니다. 따라서 입력 처리를 보장하기 위해 if 문을 콜백 함수 내에 위치시키는 것이 중요합니다.

콜백 함수는 비동기 작업을 처리하는 데 사용되며, 비동기 작업이 완료된 후에 처리해야 하는 작업을 안전하게 보장하는 방법 중 하나입니다.

 

 

 input.push(...parts); // 배열에 추가 input.push(parts) 이렇게 하면 틀려?


예, input.push(...parts);과 input.push(parts);는 서로 다른 동작을 합니다.

input.push(...parts);는 parts 배열의 각 요소를 input 배열에 개별적으로 추가합니다. 즉, parts 배열의 각 요소가 input 배열에 개별 항목으로 들어갑니다.

input.push(parts);는 parts 배열 자체를 input 배열에 하나의 요소로 추가합니다. 따라서 input 배열 안에 parts 배열이 포함된 형태로 저장됩니다.

원래 의도대로 여러 입력을 분리하여 input 배열에 추가하려면 input.push(...parts);를 사용해야 합니다.




User
    const parts = line.split(' ');   이렇게 하면 그냥 문자 하나하나인데 ...을 안 쓰면 배열 자체로 들어가진다고?
ChatGPT
네, 정확히 맞습니다. const parts = line.split(' '); 코드는 line 문자열을 공백 문자로 분할하여 각 단어를 배열의 각 요소로 저장합니다. 따라서 ... (스프레드 연산자) 없이 사용하면 배열 자체가 parts에 저장되고, parts는 문자열이 아니라 문자열 배열이 됩니다.

예를 들어, line 문자열이 "Hello World"라면:

const parts = line.split(' ');를 사용하면 parts는 ["Hello", "World"]가 됩니다.
const [parts] = [line.split(' ')];를 사용하면 parts는 ["Hello", "World"]가 됩니다.
const ...parts = line.split(' ');를 사용하면 ...parts는 "Hello" 및 "World"가 됩니다.
따라서 input.push(...parts);를 사용하면 배열의 각 요소를 개별적으로 input 배열에 추가하게 됩니다.

 

 

 

 

  const readline = require('readline');
  const rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
  });
 
  let input = [];
 
  rl.on('line', function (line) {
      words = line.split(' ');
  }).on('close', function () {
      input.push(...words);
 
      if (input.length >= 1 && input.length <= 10) {
         console.log(input.join(''));
      } else {
          console.log('Input length should be between 1 and 10');
      }
  });
 

 

어휴 join 메소드 

 

  • array: 배열 요소를 문자열로 결합할 배열입니다.
  • separator: 선택적 매개변수로, 배열 요소를 결합할 때 각 요소 사이에 삽입할 문자열입니다. 이 문자열은 생략될 수 있으며, 생략하면 기본적으로 쉼표(,)가 사용됩니다.

예를 들어, 다음과 같이 배열 요소를 공백으로 연결할 수 있습니다:

 

join 메소드는 배열을 문자열로 변환하거나 원하는 구분자로 배열 요소를 연결할 때 유용하게 사용됩니다.

 

join 메소드를..어휴.. (' ') 이렇게 해서 안됐음... ('')이렇게 해야함.

 

  array.join(separator)

  const words = ["Hello", "World"];
const combinedString = words.join(' ');
console.log(combinedString); // "Hello World"
반응형