KnockOn Bootcamp

[2주차 TIL] KnockOn Bootcamp(Javascript)

20wk 2024. 8. 10. 02:28

자바스크립트는 웹 페이지를 동적으로 만들어주는 스크립팅 언어이다. 웹 브라우저 내에서 다양한 기능을 실행할 수 있으며, 이벤트 처리, 데이터 저장, DOM 조작 등을 가능하게 한다.

자바스크립트의 기본 문법

자바스크립트는 웹 개발에서 많이 사용되는 프로그래밍 언어로, HTML과 CSS와 함께 웹 페이지를 동적으로 만들어준다. 기본 문법은 다음과 같다:

alert('Hello'); alert('World');

1. 여러 개의 구문은 세미콜론을 기준으로 구분한다.

// 주석
/* 
여
러
줄
주
석
*/

2. //로 한 줄 주석을, /* */로 여러 줄 주석을 작성한다.

3. 대소문자 구분 : 변수명과 함수명에서 대소문자를 구분합니다.

 

변수 선언과 데이터 타입

자바스크립트에서는 변수 선언에 var, let, const를 사용한다. 각각의 차이는 다음과 같다:

  • var: 함수 스코프(함수 내부의 어디서든 참조가 가능하지만, 외부로는 참조가 불가능. 함수 외부에서 var 가 선언 되었다면 전역변수로 간주), 재선언 가능.
  • let: 블록 스코프(블록 내부에서 선언된 let , const 변수는 외부에서 참조되지 않음), 재선언 불가.
  • const: 블록 스코프, 상수로 선언.

var, let, const의 차이

var 에서는 중복 선언과 재할당이 모두 가능하다. 마지막에 할당된 값이 최종으로 변수의 값으로 저장된다.

let 에서는 중복 선언을 허용하지 않는다. 중복 선언을 할 경우 SyntaxError 가 발생하게 된다. 재할당은 var 와 동일하게 가능하다.

const 는 상수를 선언하는 키워드이기 때문에 선언과 초기화를 하고 나면 다른 값을 재할당 할 수 없다

 

기본 데이터 타입은 다음과 같다:

  • 숫자(Number): 정수와 실수.
  • 문자열(String): 문자열 데이터.
  • 불리언(Boolean): true 또는 false.
  • null: 명시적으로 "비어 있음"을 나타냄.
  • undefined: 값이 할당되지 않은 상태.
  • 객체(Object): 키-값 쌍으로 이루어진 데이터 구조.
  • 배열(Array): 순서가 있는 데이터의 리스트.

함수 정의와 호출

함수 선언식

function func_name(매개변수) {
    // 실행할 코드
}

 

함수 표현식

const func_name = function(매개변수) {
    // 실행할 코드
};

 

화살표 함수

function 키워드 대신 화살표(=>)를 사용하여 보다 간략한 방법으로 함수를 선언

const func_name = (매개변수) => {
    // 실행할 코드
};

 

함수 호출

func_name(1)  // 화면에 아무 것도 출력되지 않음

console.log(func_name(1)) // 화면에 2가 출력됨

 

그냥 함수 이름만 호출하는 것과 달리  console.log(func_name(1))은 console.log 안에서 받고 있기 때문에 함수의 결과가 화면에 출력된다.

객체와 배열의 사용 방법

객체: 여러 속성을 하나의 변수에 저장할 수 있도록 해주는 데이터 타입으로 키-값 쌍으로 데이터를 저장하는 구조이다.

const person = {
    name: "John",
    age: 30,
    greet: function() {
        console.log("Hello");
    }
};

 

배열: 여러 값을 순서대로 저장하는 데이터 구조.

const fruits = ["Apple", "Banana", "Cherry"];
console.log(fruits[0]); // "Apple"

 

자주 사용하는 내장 함수들

 

  • 문자열 관련 함수:
    • charAt() : 해당 인덱스 문자 반환
    • toUpperCase() : 문자열을 대문자로 바꾸어 반환
    • toLowerCase() : 문자열을 소문자로 바꾸어 반환
    • split(separator, limit) : separator로 문자열을 자른 후 배열로 반환  
    • substr(start, count) : start부터 count까지 문자열을 잘라서 반환

 

  • 배열 관련 함수:
    • push() : 배열의 마지막에 새로운 요소 추가
    • pop() : 배열의 마지막 요소를 제거 후 리턴
    • map() : 기존의 배열에 특정 규칙을 적용해서 새로운 배열 생성
    • filter() : 특정 조건을 만족하는 요소를 추출해 새로운 배열 생성
    • reduce() : 배열의 요소가 하나가 될 때까지 요소를 왼쪽부터 두 개씩 묶는 함수 실행
    • forEach() : 배열을 for in 반복문처럼 사용 가능
  • 수학 관련 함수 (Math 객체):
    • Math.random() : 0부터 1까지의 임의의 수 반환
    • Math.floor() : 작거나 같은 가장 큰 정수 반환
    • Math.ceil() : 크거나 같은 가장 작은 정수 반환
    • Math.max() : 매개변수 중 가장 큰 값 반환

 

 

 

 

 

 

도전! 룰렛 게임 완성하기

<!DOCTYPE html>
<html>
  <head>
    <title>Roulette Game</title>
    <script></script>
  </head>
  <body>
    <div id="roulette">1</div>
    <button id="stopButton">정지</button>

    <script>
      const values = [1, 2, 3, 4, 5, 6];

      const rouletteDisplay = document.getElementById("roulette");

      let intervalId = null;

      let currentIndex = 0;

      function startRoulette() {
        intervalId = setInterval(() => {
          currentIndex = (currentIndex + 1) % values.length; // 인덱스가 1~6 사이에서 순환
          rouletteDisplay.textContent = values[currentIndex]; // 화면에 숫자 표시
        }, 100); 
      }

      document.getElementById("stopButton").addEventListener("click", () => {
        clearInterval(intervalId);

        alert("선택된 숫자: " + values[currentIndex]);
      });

      startRoulette();
    </script>
  </body>
</html>

 

 

 

참고

https://ko.javascript.info/javascript-specials

https://wickies.tistory.com/25

https://velog.io/@surim014/%EC%9B%B9%EC%9D%84-%EC%9B%80%EC%A7%81%EC%9D%B4%EB%8A%94-%EA%B7%BC%EC%9C%A1-JavaScript%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-part-7-Object-35k01xmdfp

https://velog.io/@dongjun187/javascript-var-let-const-%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90