자바스크립트-자료형, 연산자, 조건문, 반복문, 함수

jaegeunsong97·2023년 9월 16일

Node.js

목록 보기
2/7

변수와 자료형

  • 원시형 : 1개의 데이터를 담고 있는 자료형, 고정된 메모리 크기, 직접적 가리킴, call by value

    • 숫자형 : 정수, 실수
    • 문자열형
    • 불리언형 : true, false
    • 널형 : null만 가질 수 있음
    • Undefined형 : 값이 할당 X
  • 오브젝트형 : 1가지 데이터X, 데이터 컬렉션과 같은 여러가지 자료형 표현가능, call by reference

  • 숫자형

    • 오류 예시
var nan = '난'/10;
console.log(nan); // NaN
  • null, Undefined
    • undefined : 사용자의 실수, 오류의 값
    • null : 사용자가 의도적으로 한것(추천)
var love = null;
console.log(love); // null
console.log(Boolean(love)); // false

var name;
console.log(name); // undefined

var nickname = 'lch';
console.log(nickname); // lch
nickname = undefined;
console.log(nickname); // undefined
  • 오브젝트 형
    • 원시형 : call by value
    • 오브젝트형 : call by reference
    • 콜스택과 메모리 힙
      • 자바스크립트 엔진콜스택 + 메모리 힙
      • 콜 스택 : call by value(데이터 저장)
      • 메모리 힙(동적 메모리) : call by reference(필요할 때 할당)
        • 1. 데이터는 메모리 힙에 저장
        • 2. 데이터의 주소는 콜 스택에 저장
var msg = 100; // 원시형

var msg = {haha : '불꽃 남자'}; // 오브젝트형

// 1
var msg = {
     name : '불꽃 남자',
     comment : '포기를 모르는 남자',
     age : 16
};
var array = [];
array.push(msg);
console.log(array);

// 2 (new 연산자 사용)
var msg = new Object();
msg = {
     name : '불꽃 남자',
     comment : '포기를 모르는 남자',
     age : 16
};
var array = new Array();
array.push(msg);
console.log(array);

연산자

  • 형변환
// 숫자데이터인 문자열 앞에 + 붙인 경우
console.log(+'1024'+1); // 1025
console.log(+true); // 1
console.log(+false); // 0
console.log(+'tent'); // NaN

// +
console.log('10' + 2); // 102
console.log('긴급출동' + 119); // 긴급출동119

// - * / (형변환)
console.log('10' - 2); // 8
console.log('10' * 2); // 20
console.log('10' / 2); // 5
console.log('10' - '2'); // 8
console.log('10' * '2'); // 20
console.log('10' / '2'); // 5
  • ==, ===
    • == : 값만 일치(true)
    • === : 값, 타입 일치(true)
var size1 = 1024;
var size2 = '1024';
console.log(size1 == size2); // true
console.log(size1 === size2); // false

console.log(null == undefined); // true
console.log(null === undefined); // false

console.log(null == 0); // false
console.log(0 == undefined); // false

// 조건부
var age = 30;
var result = age >= 19 ? '성인입니다.' : '애기';
console.log(result);

// !연산자의 기본 원리
console.log(!'jason'); // false
console.log(!null); // false
console.log(!0); // false

// ??
var id = 'jason';
var result = (id != null && id != undefined) ? '아이디가 입력되었습니다.' : '다시 입력해'; 
console.log(result); // 아이디가 입력되었습니다.

var id = 'jason';
var result = (id ?? null)  ? '아이디가 입력되었습니다.' : '다시 입력해'; 
// 변수 id가 null도 아니고 undefined도 아니면 a 값이 유효하다. 그 외에는 b가 유효
console.log(result);

조건문

  • Node.js기반에서 사용자로부터 데이터를 입력받는 방법
const readline = require('readline');
const rl = readline.createInterface({
     input: process.stdin,
     output: process.stdout
});
rl.question('프로그래밍 언어 이름을 입력하시오 : ', function(data){
     // 입력값에 대한 처리
     console.log('가장 졸하아는 프로그래밍 언어는 ' + data + '입니다.');
     rl.close();
});
  • 예시
// 짝수 홀수
const readline = require('readline');

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

rl.question('정수를 입력하세요 : ', function(num){
     num = num % 2;
     if (num) {
          console.log("홀수 입니다.");
     } else { 
          console.log("짝수 입니다.");
     }
     rl.close();
});

// overlap
const readline = require('readline');

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

rl.question('점수를 입력하세요. : ', function(score){
     if (score >= 60 && score <= 100) {
          if (score >= 90) {
               console.log('장학대상압니다.');
          } else {
               console.log('합격입니다.');
          }
     } else {
          if (score >= 0 && score < 60) {
               console.log('불합격입니다.');
          } else {
               console.log('값이 유효하지 않습니다.');
          }
     }
     rl.close();
});

// elseif
const readline = require('readline');

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

rl.question('점수를 입력하세요. : ', function(score){
     if (score >= 90 && score <= 100) {
          console.log('장학대상압니다.');
     } else if (score >= 60 && score < 90) {
          console.log('합격입니다.');
     } else if (score >= 0 && score < 60) {
          console.log("불합격입니다.")
     } else {
          console.log('값이 유효하지 않습니다.')
     }
     rl.close();
});

// switch
const readline = require('readline');

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

rl.question('C 드라이브를 포맷하시겠습니까? ', function(ch){
     switch(ch) {
          case 'y':
               console.log('예 드라이브를 포맷하겠습니다. ');
               break;
          case 'n':
               console.log('아니오 드라이브를 포맷하지 않겠습니다. ');
               break;    
          default:
               console.log('유효하지 않은 문자입니다. ');
               break;  
     }
     rl.close();
});

// 예시
const readline = require('readline');

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

rl.question('점수를 입력하세요. : ', function(score){
     if (score >= 60 && score <= 100) {
          console.log('합격입니다.');
     } else {
          console.log('불합격입니다.');
     }
     rl.close();
});

반복문

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

rl.question('단수를 입력하세요 : ', function(dan){
     for (var i = 1; i < 10; i ++) {
          console.log(dan + ' * ' + i + " = " + dan * i);
     }
     rl.close();
});

// while
var dan = 2;
outside: while(dan < 10) {
     var num = 1;
     while (num < 10) {
          if (dan == 6 && num == 1) {
               break outside;
          }
          console.log(dan + '*' + num + '=' + dan * num);
          num++;
     }
     dan++;
}

함수

  • 함수의 종류
    • 내장함수
    • 사용자 지정 함수
function showMsg() {
     console.log('Hello Javascript');
}
showMsg();
showMsg();
showMsg();

function plus(a, b){
     console.log('두 수의 합 : ' + (a + b));
}
plus(2, 3);
plus('ABCD', 'EFGH');
plus(3.14, 1.58);


// 지역변수 전역변수 매개변수
function account() {
     var savedUser = '송재근';

     console.log('반갑습니다.' + savedUser + '님');
}
account();
console.log('또 오셨네요' + savedUser + '님'); // savedUser 지역변수

function naver() {
     console.log('naver 함수 진입');
     var savedUser = '명재우';
     google();
     console.log('naver 함수 탈출');
}
function google() {
     console.log('google 함수 진입');
     var savedUser = '전승준';
     console.log('google 함수 탈출');
}
naver();
  • 지역변수 -> 스택메모리에 순서대로 할당
// 전역변수
var savedUser = '이은성';

function account() {
     console.log('반갑습니다.' + savedUser + '님');
     savedUser = '김사랑'; // 변경 해버리기
}
account();
console.log('또 오셨네요' + savedUser + '님');


// 매개변수
function account(userId) {
     var savedUser = '송재근';

     if (userId == savedUser) {
          console.log('반갑습니다.' + userId + '님');
     } else {
          console.log('로그인 실패했습니다. ');
     }
     
}
account('송재근');
  • 함수의 리턴 예시
var userName = '송재근';
var userPW = '1111';

function account(userId, userPw) {
     console.log(userId);
     console.log(userPw);
     var savedName = "송재근";
     var savedPw = '1111';

     userPw = userPw || '1111';

     if (userId == savedName) {
          if (userPw == savedPw) {
               console.log("반갑습니다. " + userId + '남');
          }
     }
}
account(userName); // userPw = '1111'
//account(userName, userPW); // account(userName);


function Week() {
     console.log('Mon');
     console.log('Tue');
     console.log('Wed');
     return;
     console.log();
     console.log();
     console.log();
     console.log();
}
console.log(Week() === undefined);
  • 함수표현식
// 함수 표현식
var nickName = function() {
     console.log('송재근');
};
nickName(); // 익명함수

// 함수 선언식
nickName = function() {
     console.log('명재우');
};
nickName();

// 함수 변수에 복사
var nickName = function() {
     console.log();
};

var userName = nickName;
userName();
nickName();
profile
현재 블로그 : https://jasonsong97.tistory.com/

0개의 댓글