코린이의 개발 일지

[JS 문법] 자바스크립트 기초 문법 (표준 입출력, 함수, 자료구조, 조건문, 반복문) 본문

자바스크립트

[JS 문법] 자바스크립트 기초 문법 (표준 입출력, 함수, 자료구조, 조건문, 반복문)

폴라민 2022. 8. 21. 01:28
반응형

변수 네이밍 룰

  • 변수, 함수: camelCase
  • class : CamelCase

출력

console.log("hello"); // print()와 같다.

변수 선언

let va; // 변수 선언
va = 3; //초기값 넣기 가능

console.log(va);

상수 선언

const testvalue = 1;
console.log(testvalue);

데이터 타입

  • Number : int/float 를 정의하는 타입
  • String
  • Boolean
  • null
    • 값이 없음. null이라는 이름의 값 하나만 가질 수 있음.
  • undefined
    • 변수를 선언했는데, 값이 할당되지 않은 경우
  • object
  • Symbol
    • unique한 값을 만드는 데이터 타입

→ 타입 알아보는 문법

const testvalue = 1;
console.log(typeof testvalue);

타입 변환

let va; // 변수 선언
va = '3'; //초기값 넣기 가능
Number(va); // 이러면 String 에서 Number로 변환

실수에서 정수 추출

parseInt(1.2);
parseInt("1.2"); // 얘도 type Number로 변경된다.

parseFloat(1.2); //얘도 있다.

연산자

동등 연산자, 일치 연산자

동등 연산자: == → 값만 같은지 확인

일치 연산자: === → 값과 데이터 타입 둘다 같은지 확인.

자바스크립트는 주로 비교 할 때, 일치 연산자 === 를 사용하면 된다. (다른 언어에서 == 사용하는 상황에서)

다르다는 !== 이다.

++연산, --연산

파이썬과는 다르게, 그리고 c언어와는 같게
++연산자 있다.

문자열 연산

문자열 붙일 때, 플러스 사용 가능

let string1 = 'Hello';
console.log(string1 + 'world');

조건문

if (조건){
    코드;
}

반복문

switch/case 구문 사용 가능

switch(변수){
    case 1:
        코드;
        break;
    default:
        코드;
}

함수

function map(f, a) {
    var result = []; // Create a new Array
    var i; // Declare variable
    for (i = 0; i != a.length; i++)
      result[i] = f(a[i]);
        return result;
  }
  var f = function(x) {
     return x * x * x;
  }
  var numbers = [0, 1, 2, 5, 10];
  var cube = map(f,numbers);
  console.log(cube);

// arrow function

let func = (x) => { return x*x*x; } // 익명 함수.

console.log(func(3))

///////////////////
let func = function(x) {
    return x*x*x;
} // 이렇게도 쓸 수 있음.

let func = x => x*x*x; // 이렇게도 쓸 수 있음.

내장 자료구조

1. 딕셔너리(객체)

객체 타입을 사용할 수 있다.

let obj = {
    1: "banana",
    2: "hong",
    3: "monkey"
}

다른 언어와 마찬가지로 키 중복은 안된다.

let obj = {
    1: "banana",
    2: "hong",
    3: "monkey",
    3: "hello"
}

// 출력결과
// { '1': 'banana', '2': 'hong', '3': 'hello' }

객체에서 키값만 배열 형태로 가져오기

Object.keys(dictObject); // ["1", "2", "3"]

이렇게 가져온 keys배열은 원소가 모두 String 타입이기 때문에
필요시 Number 타입으로 변환해야한다.

객체 출력

자바스크립트는 객체 깊이가 깊어지면 다 출력이 안되는데 다음과 같은 방법을 사용하면 된다.

console.dir(object, {depth:null}) // object에 출력하고자 하는 객체 넣으면 된다.

2. 배열

    • 요소 추가하는 방법.
      arr.push(요소)
    • 배열 슬라이싱
      arr.slice(시작점, 끝점)
    • 주어진 배열에서 최대값 찾기
      var m = Math.max(...myArray);
    • 배열 길이
      arr.length;
    • 배열 비우기
      arr.length = 0;
    • 배열 정렬하기
      arr.sort(); // 아스키값 기준으로 정렬
      • 숫자를 정렬 하려면?=> 콜백 함수로 정렬 기준을 지정해줄 수 있다. (파이썬에서 람다함수와 비슷하다고 보면 된다.)
      •  

아스키값 기준 정렬이라 숫자 정렬시 숫자 오름차순으로 정렬되지 않는다. (주의)

    •  
    • score.sort(function(a, b) { // 오름차순 return a - b; // 1, 2, 3, 4, 10, 11 });

3. 집합

집합 활용해서 중복 제거하기

set = new Set(arr);
uniqueArr = [...set];

표준 입력 받기

readline 내부모듈 활용 (비동기 방식)

import { createInterface } from "readline";

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

rl.setPrompt("> ");
rl.prompt();

rl.on("line", (input) => {
    if (input === "exit") process.exit();
    console.log(input);
    rl.prompt();
})

readlineSync 외부모듈 사용 (동기 방식)

=> 이방식이 가장 다른 언어 입력 방식처럼 사용할 수 있다.
=> 설치가 따로 필요하다.

  • 설치 방법
    npm install readline-sync
import readlineSync from 'readline-sync'

cmd = readlineSync.question("Enter your command: ")
cmd = cmd.trim(); // 좌우 공백 제거

파일 분리

다른 파일에 있는 함수 불러오기

// 부르는 파일 위에 적는다.
import { 함수 이름들 } from "./lib.mjs"; // 불러올 대상 파일 디렉토리

// 부를 파일, 확장자는 .mjs
export { 함수 이름들 };

위 방식은 ES6 버전 방식으로 commonjs를 사용하려면 다른 방식으로 해야한다.

반응형
Comments