Post

[JavaScript] 한 페이지에 싹 정리

[JavaScript] 한 페이지에 싹 정리

난 자바스크립트가 좋더라..

기본

콘솔창 출력

1
2
console.log("Hello");    // 주석처리는 슬래쉬로 함  
console.log(12);         // 출력할때 'console.log()'사용함!!!  

여기서 별개로 console.log의 경우 콘촐창에 출력하는 건데,
문서등에 직접 입력을 할 때는
document.write 를 사용한다.

1
2
document.write("Hello");   // Hello  
document.write(12);        // 12

변수 : 값에 붙이는 이름표

1
2
3
4
5
// let 변수명 = 값
let espressoPrice = 3000;     // 변수 선언은 'let 변수' 이런시스템!!  
let lattePrice = 4300;
// const 상수명 = 값
const PI = 3.14;

함수 : 특정 코드를 모아 이름을 붙인 것임

  • 파라미터 : 함수에 넘겨주는 값
  • return문 : 함수의 반환값, 함수 종료시킴
    1
    2
    3
    4
    5
    6
    
    // 함수 정의
    function welcome(name){
      console.log('안녕하세요' + name + '님아!');
    }
    // 함수 호출
    welcome('근대요'); // 출력값 : 안녕하세요 근대요 님아!
    

자료형(Data Type)

숫자형

  • 정수(Integer) : -1, -2, 0, 1, 2 - 소수(Floating Point) : 3.14, -7.3, 2.0
  • 숫자형 연상
연산 종류예제
덧셈7 + 4
뺄셈7 - 4
곱셈7 * 4
나눗셈7 / 4
7 // 4
나머지7 % 4
거듭제곱7 ** 4
  • 연산의 우선 순위 : 기본적인 사칙 연산 규칙을 따름

문자형(String)

  • 기본 형태 “피카츄” ‘피카츄’ “Hi "I’m Pikachu"” <– 문자열 알에 따옴표 포함하고 싶을 때

  • 문자열 연결 ‘피카츄’ + ‘돈까스’ –> ‘피카츄돈까스’
    1
    2
    
    let count = 2;
    let text = '초코 우유' + count '';  // 출력값 : '초코 우유 2잔'
    
  • 템플릿 문자열
    1
    2
    
    let count = 3;
    let text = '초코 우유 ${count} 잔' ; // 출력값 : '초코 우유 3잔'
    

    난 이 방법이 더 편함..

불린형(Boolean)

  • true, false

  • 논리 연산자

A && B (A,B 둘 다 true여야 true)
A || B (A,B 둘 중에 하나만 true 여도 true)
!A (반대의 불린값)

  • 비교 연산자 <,>,<=,>=,===,!==

형 변환

  • 숫자형
    1
    2
    
    Number('10') + Number('5')            // --> 15  
    Number('abc')                         // --> NaN  
    
  • 문자열
    1
    
    String(10) + String(5)                // --> '105'  
    
  • 불린형
    1
    2
    3
    
    Boolean(123)                          // --> true  
    Boolean(-123)                         // --> true  
    Boolean(0), Boolean(''), Boolean(NaN) // --> false
    
  • typeof 연산자
    1
    2
    
    let name = '꼬부기';
    console.log(typeof name);  // 출력값 : string
    
  • null과 undefined
    • null : 의도적으로 값이 없다는 표현할 때 사용하는 값
    • undefined : 값이 없다는 것을 확인하는 값
      1
      2
      3
      4
      5
      6
      
      let count;
      console.log(count);  // undefined 출력
      count = 7;
      console.log(count);  // 7 출력
      count = null;        // 의도적으로 값을 없애기
      console.log(count);  // null 출력
      

제어문

if 조건문

  • 조건 부분이 true이면 동작 부분 실행 if(조건 부분){ 동작
1
2
3
4
5
6
7
8
9
//예시
let temperature = 17;
if(temperature >= 30){
    console.log('덥노');
} else if(temperature <= 0){
    console.log('춥노');
} else {
    console.log('날씨 쥑이네');
}

switch문

  • 비교할 값이 해당하는 조건의 동작 부분을 실행
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    let grade = 'B';
    switch (비교할 ){                       // switch (비교할 값){  
      case 'A':                            //     case 조건값1:  
          console.log('참 잘했어요');       //     break;  
          break;
      case 'B':
          console.log('잘 했어요');
          break;
      default:
          console.log('못했어요');
          break;
    }
    

for 반복문

  • 조건 부분이 true인 경우 동작 부분을 반복해서 실행
    1
    2
    3
    
    for(let i = 0; i < 10 ; i++){       // for(초기화부분; 조건부분; 추가동작부분;){  
      console.log(i);                 //      동작부분  
    }                                   // 출력값 : 0~9까지 출력
    

while 반복문

  • 조건 부분이 true인 경우 동작 부분을 반복해서 실행
    1
    2
    3
    4
    5
    
    let i = 10;
    while(i>0){             //  while(조건부분)
      console.log(i);     //        동작부분  
      i--;
    }                       // 출력값 : 10~1까지 출력하는데 i가 1씩 줌
    

break 와 continue

  • break: 반복문 종료
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    let i = 23;
    while (i <= 100){
      if(i % 7 === 0){
          break;           // i가 7의 배수이면 반복문 종료  
      }
      i++;                 // i를 1씩 증가 시킴  
      console.log(i);      // 10~1까지 출력  
      i--;                 // i를 1씩 감소  
    }
    
  • continue: 다음 조건 부분으로 넘어감
    1
    2
    3
    4
    5
    6
    
    for (i=0;i<20;i++){
      if(i%2==0){
          continue;       // i가 2의 배수이면 다음 조건 부분으로 넘김  
      }
      console.log(i);     // 1,3,5,..19까지 출력  
    }
    

객체와 배열

객체

  • 값이름(key)과 값(value) 한 쌍의 형태
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    {
      키_1 : 값_1,
      키_2 : 값_2,
      키_3 : 값_3,
    }
    let game = {name: '포켓몬 피카츄',releaseDate: 2025};     // 변수에 객체 저장함
    game['name']                                            // 키를 통해 값 받아옴 --> '포켓몬'
    game.releaseDate                                        // 키를 통해 값 받음   --> 2025
    game['nintendo'] = true                                 // 새로운 쌍 추가함    --> {name: '포켓몬',releaseDate: 2025, nintendo: true}
    game.price = 64800;                                     // 새로운 쌍 추가      --> {name: '포켓몬',releaseDate: 2025, nintendo: true, price:64800}
    delete game.releaseDate;                                // 쌍 삭제하기
    console.log('xbox' in game);                            // 키가 존재 하는지 확인 --> 없으니 false
    

for..in 반복문

  • 객체의 모든 키에 대해 for 반복문 실행
    1
    2
    3
    4
    5
    
    let game = { name: '디지몬',releaseDate: 2025,xbox : true};
    for (let key in game){
      console.log(key);          // name, releaseDate, xbox 출력
      console.log(game[key]);    // '디지몬', 2025, true 출력
    }
    

배열

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let Digimon = ['아구몬', '파피몬', '파닥몬', '가트몬'];        // 변수에 배열 저장함
//     인덱스      0        1        2        3
Digimon[1]                                                 // 인덱스를 통해 요소 받아옴 '파피몬'
Digimon.length                                             // 요소 갯수 길이 '4'
Digimon.splice(1,2,'데빌몬');                               // splice로 삽입과 동시에 삭제함
// 1번 인덱스에 '데빌몬' 추가, 기존에 있던 요소는 2개 ('파피몬','파닥몬') 삭제
//  ['아구몬','데빌몬','가트몬']
Digimon.shift();                                           // 첫 요소 삭제함
//  ['데빌몬','가트몬']
Digimon.pop();                                             // 마지막 요소 삭제
//  ['데빌몬']
Digimon.unshift('엔젤몬');                                  // 첫 요소 추가함
//  ['엔젤몬','데빌몬']
Digimon.push('세라피몬');                                   // 마지막 요소 추가하는것
//  ['엔젤몬','데빌몬','세라피몬']

for..of 반복문

  • length 를 활용한 for 반복문
    1
    2
    3
    4
    
    let number = ['1','2','3','4'];
    for(let i=0; i<number.length; i++){
      console.log(number[i]);          // '1','2','3','4' 출력함
    }
    
  • for..of를 활용한 for 반복문
    1
    2
    3
    4
    
    let number = ['1','2','3','4'];
    for(let numbers of number){
      console.log(numbers);            // '1','2','3','4' 출력
    }  
    

문자열 활용

문자열 활용

1
2
3
4
5
6
7
let text = '확인용 단어용';
// 요소 탐색
text.indexOf('')        // 2 --> 앞에서 부터 제일 처음 등장하는 위치
text.lastIndexOf('')    // 7 --> 앞에서 부터 제일 마지막에 등장하는 위치
text.[2]                 // 용
text.charAt(2)           // 인덱스2 에해당하는 문자 반환 '용'
text.length              // 문자열 길이 '7'

내장 객체

날짜 객체 Date

  • 객체 만들기
    1
    2
    
    let date = new Date('2025-01-01T19:11:16');  
    let date = new Date(2025,0,1,19,11,16);           // month는 0부터 시작!
    
  • getTime() : 1960년 1월 1일 00:00:00 UTP부터 몇 밀리초 지났는지
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    date.getTime()                     // 1735726276000
    date.getFullYear()                 // 2017
    date.getMonth()                    // 0 --> month는 0부터 시작함!!
    date.getDate()                     // 1
    date.getDay()                      // 3 --> 0은 일료일, 1은 월요일임!! ok?
    date.getHours()                    // 19
    date.getMinutes()                  // 11
    date.getSeconds()                  // 16
    date.getMilliseconds()             // 0
    
  • 수학 객체 Math
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Math.abs(-10)          // 10 --> 절대값
    Math.abd(10)           // 10 --> 절대값
    Math.max(2,-1,4,5,0)   // 5  --> 최대값
    Math.min(2,-1,4,5,0)   // -1 --> 최소값
    Math.pow(2,3)          // 거듭제곱 2**3 과 동일
    Math.sqrt(49)          // 7  --> 제곱근
    Math.round(2.4)        // 2  --> 반올림
    Math.round(2.5)        // 3  --> 반올림
    Math.floor(2.4)        // 2  --> 소수점 버림
    Math.floor(2.5)        // 2  --> 버림
    Math.ceil(2.4)         // 3  --> 반올림
    

    후…

화살표 함수, 함수 표현식

  • 일반 함수와 화살표 함수 문법 비교 ```javascript // 일반적인 함수 선언 function add(a, b){ return a + b; }

// 을 함수 표현식으로 해석 const add = function(a, b){ return a + b; };

// 을 화살표 함수로 const add = (a, b) => a + b;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
*화살표 함수는 this가 상위 스코프에 고정되는 특징!!*  
**코드가 간단하고 짧을땐 좋지만, 그 외는 다 단점**
  
 
### 구조 분해 할당과 스프레드 연산자  
- **객체 및 배열 구조 분해 예**
```javascript
// 객체 구조 분해
const testUser = { id: 'user1', name: '홍길동', role: 'admin'};
const {id, name, role} = testUser;
console.log(name); // 홍길동

// 배열 구조 분해
const test Results = [92,85,78];
const [high, medium, low] = testResults;
console.log(high); // 92

// 중첩 구조 분해
const response = {
  data: { user: { id: 1, profile: { firstName: '길동' }}}
};
const {data: {user: {profile: {firstName }}}} = reponse;
console.log(fristName); // 길동
  • 스프레드 연산자 ```javascript // 배열 복사 및 병합 const baseConfig = [‘chrome’,’firefox’]; const fullConfig = […baseConfig, ‘safari’,’edge’];

// 객체 복사 및 병합 const defaultUser = { role: ‘user’, active: true}; const admin - {…defaultUser, role: ‘admin’,permissions: [‘all’]};

// 함수 호출 시 사용 const numbers = [1,5,3,9]; const max = Math.max(…numbers); // 9 ``` … 점 세개 중요!

This post is licensed under CC BY 4.0 by the author.