TIL 20230525(연산자, 조건문,반복문,모듈,readline)

뿌링클 치즈맛·2023년 5월 26일
0

Elice AI트랙 8기

목록 보기
9/28

자바스크립트 기초

연산자

숫자뿐만 아니라 문자열도 산술 연산자 사용 가능!
console.log("10"+"70"); //1070
console.log("10"-"5"); //5
console.log("10"*"5");//50
console.log("10"/"5");//2
console.log("10"%"5");//0

console.log(1+true);//2

정말 연산이 된다! 다만 +연산자는 문자열이 연산자/피연산자인 경우에는 연산자/피연산자를 문자열로 바꿔 연결시킨다.
+) + 연산자 사용시 연산자와 피연산자가 모두 문자열이 아닐 경우 (1+true)에는 숫자로 변환되기도 한다.

var num = 7;
console.log(++num); //num+1 후 num 출력 8
console.log(--num); //num-1 후 num 출력 6
console.log(num++); 
//num 출력 후 num+1 출력되는 값은 7이지만 다음 줄에 console.log(num)하면 8
console.log(num--); //num 출력 후 num-1 7

연산의 순서를 잘 생각하기~!

console.log(10==10); //true 값이 같고 데이터 타입은 달라도 ㄱㅊ
console.log(10!='10') //false 값이 같고 데이터 타입은 달라도 ㄱㅊ 

console.log(10==="10") //false 값과 데이터 타입이 모두 같아야 함
console.log(10!=='10') //true 값과 데이터타입이 모두 같아야 false

비교연산자는 가볍게 정리만 했다.
!=는 데이터 타입은 달라도 괜찮지만 값은 같아야 한다.
헷갈리니 ==에서 =하나를 !로 바꿨다고 생각하자. !===는 없다.

console.log('3'==3 && 3==='3');  //&&:둘 중 하나라도 false이면 false.
console.log('7'==7|| 3!=3); //||(OR):둘 중 하나만 true여도 true.

삼항 조건 연산자
삼항 조건 연산자는 조건식의 평가 결과에 따라 반환할 값을 결정한다.

 var n=1; 
 n > -10 ? 'pass':'fail' 

쉼표 연산자
쉼표 연산자는 왼쪽 피연산자부터 차례대로 피연산자를 평가함.

 var a,b,c; 
 a=1,b=2,c=3 

조건문 If

if ( 조건1 ) {
	실행할 명령
}
else if( 조건2 ){
 조건1이 거짓이고 조건2가 참일 경우 실행할 명령
 }
 else{
  조건 12가 모두 거짓인 경우(만족하지 않을 경우) 실행할 명령
 }

조건문은 위와 같은 형태로 사용한다.

var a=50;
var b=90;

if (a!==b){
  if(a>b){
    console.log('a가 b보다 크다.');
   else {
     console.log('a가 b보다 작다.');
else{
  console.log('a와 b는 같다.');
  

중첩 if문까지~


반복문

**for 문**
for (var i=0;i<7;i++){
	console.log(i);
}

var a=0;
while (a<7){
	console.log(a);
    a++ //++a면 마지막에 출력되는게 7이 됨. 먼저 +1하고 출력하니까!
    }

var num=0;
do{
	console.log(num);
    num++;}
while(num>7)
 

for문은 (초기화한 변수값; 조건;증감표시){ 조건이 참일 경우 실행할 명령 }
while문은 while ( 조건 ) {조건이 참일 경우 실행할 명령 }
do while문은 do{ 조건이 참일 경우 실행할 명령} while(조건);
do while문은 while의 조건이 아래에 있기 때문에 do의 명령을 무조건 실행부터 한다.
while문과 do while문 사용시에는 변수를 따로 선언해줘야 한다!

Switch문

var x=2;
var rank
switch(x){
	case 1: rank='First';
    case 2: rank='Second';
    case 3: rank='Third';
    case 4: rank='Fourth';
    case 5: rank='Fifth';
    default: rank='Out of ranking';
}
console.log(rank);

위 코드는 Second가 출력되어야 할 것 같지만 Out of ranking이 출력된다. Switch문은 break를 넣어주지 않으면 계속 반복되어 default값이 출력되기 때문이다.

var x=2;
var rank
switch(x){
	case 1: rank='First';
    break;
    case 2: rank='Second';
    break;
    case 3: rank='Third';
    break;
    case 4: rank='Fourth';
    break;
    case 5: rank='Fifth';
    break;
    default: rank='Out of ranking';
}
console.log(rank);

이제 정상적으로 Second가 출력된다.

객체 리터럴

```javascript var id={ name:'elice', age:20, printName:function(){ console.log(name) }, major:'computerscience' } delete id.major; ``` 객체 내의 값: id의 name,age 객채 내의 함수: id의 printName delete로 객체 내의 값을 삭제할 수 있다.

함수 리터럴 (값)
함수는 함수 리터럴로 생성할 수 있다.

var func=function add(x,y){ return x+y;}

함수는 객체지만 호출할 수 있다.

콜백함수

function repeat(n, f) {
  for (var i = 0; i < n; i++) {
    f(i); // i를 전달하면서 f를 호출
  }
}

var logAll = function (i) {
  console.log(i);
};

// 반복 호출할 함수를 인수로 전달한다.
repeat(5, logAll); // 0 1 2 3 4
 위에서 logAll은 콜백함수! 

모듈과 readline

실습문제에 입력 받는 게 있어서 prompt로 하려니 에러가 났다. 질문하니 prompt 함수는 브라우저에서 사용할 수 있는 함수이며 Node.js 환경에서는 prompt 대신 readline 모듈을 이용해야 한다고 한다.

모듈
프로그램은 작고 단순한 것에서 크고 복잡한 것으로 진화한다. 그 과정에서 코드의 재활용성을 높이고, 유지보수를 쉽게 할 수 있는 다양한 기법들이 사용된다. 그 중의 하나가 코드를 여러개의 파일로 분리하는 것이다. 이를 통해서 얻을 수 있는 효과는 아래와 같다.

모듈의 장점

  • 자주 사용되는 코드를 별도의 파일로 만들어서 필요할 때마다 재활용할 수 있다.
  • 코드를 개선하면 이를 사용하고 있는 모든 애플리케이션의 동작이 개선된다. (calc.js의 코드를 수정하면 해당 모듈을 사용하는 모든 파일의 코드에도 적용된다.)
  • 코드 수정 시에 필요한 로직을 빠르게 찾을 수 있다.
  • 필요한 로직만을 로드해서 메모리의 낭비를 줄일 수 있다.
  • 한번 다운로드된 모듈은 웹브라우저에 의해서 저장되기 때문에 동일한 로직을 로드 할 때 시간과 네트워크 트래픽을 절약 할 수 있다. (브라우저에서만 해당)
  • 순수한 자바스크립트에서는 모듈(module)이라는 개념이 분명하게 존재하지는 않는다. 하지만 자바스크립트가 구동되는 호스트 환경에 따라서 서로 다른 모듈화 방법이 제공되고 있다.

    readline

    const readline =require('readline');

    1.readline 모듈 불러오기
    아직 Node.js를 배우지 않아 코드를 보이는 대로만 해석했다. Node.js의 require 함수로 'readline' 모듈을 가지고 오고, 상수 readline에 해당 모듈을 저장한다. 값이 모듈 전체이기 때문에 변수보다는 상수로 지정하는 것 같다.

    const rl = readline.createInterface({
    	input: process.stdin,
    	output: process.stdout,
    });

    2.인터페이스 생성하기
    readline 모듈의 create메서드를 사용하는 것 같다. input프로퍼티로는 process.stdin,output 프로퍼티로는 process.stdout을 준다. process.stdin과 stdout은 표준 입력 데이터를 읽고 출력하기 위해 사용되는 Node.js의 내장 stream이다. 이 값 역시 바뀌면 안 되는 값이기에 상수로 지정한다.

    rl.on("line", (line) => {
    	/*입력받는 값을 처리하는 코드*/
    	rl.close();
    });
    
    rl.on("close", () => {
    	/*입력이 끝나고 실행할 코드*/
    	process.exit();
    });

    3.입출력을 처리하는 코드 작성하기
    'line'과 'close'는 readline의 이벤트라고 한다...

    Node.js를 공부해야 할 것 같다...

    profile
    뿌링클 치즈맛

    0개의 댓글