Javascript : 컨텐츠를 바꾸고 움직이는 등 페이지의 동적 처리 담당

  • 얼굴에서 눈, 코, 입, 귀가 움직임

  • 낙타표기법 camelCase 사용

    • 첫번째 단어의 첫 글자는 소문자, 두번째 단어의 첫 글자부터는 대문자
    • 변수를 작성해야 하지만 띄어쓰기를 하면 안됨, 그래서 가독성을 위해 붙여쓰되 읽기 편하게 만든 것
    • goEatChicken, workAndLife


JS 연산자

console.log(1+2) // 3, 사칙연산 +, -, *, / 
const 변수1 = 85 // '='는 변수에 값을 할당하는 연산자


JS에서 다루는 데이터의 종류

const stringData = 'Hello World' // 문자 데이터

const numberData = 1234 // 숫자 데이터

const booleanData = true // 참, 거짓 데이터

let numberData1 = 123
numberData1 = null // Null 데이터, 변수에서 값을 제거할 때 사용

const objectData = {
  key1: 'value1',
  key2: 'value2',
  key3: 'value3'
} // 객체 데이터, value1을 key1에 보관하는 형식, 위의 다양한 데이터를 한번에 보관하는 방식
console.log(objectData.key3) // key3에 대한 값을 출력, value3, 마침표를 통해 표기하는 것을 점표기법이라고 지칭
console.log(objectData['key2']) // 점표기법 대신 대괄호 사용 가능

const arrayData = [9, 8, 7, 6] // 배열 데이터, 데이터를 나열해서 보관 가능
console.log(arrayData[2]) // 인덱스 넘버가 2인 값 출력, zero-based numbering으로 0부터 셈


변수 설정하는 법

const 변수2 = '값2' // 값을 다시 할당할 수 없는 변수 생성, 재할당 시 에러 발생, let보다 권장되는 방법

let 변수3 = '값3' 
변수3 = '값3.5' // 값을 다시 할당할 수 있는 변수, 변수3이 값3에서 값3.5로 변경, 재할당이 필요할 때만 사용

// 예약어 : 특별한 의미를 가지고 있어서 변수나 함수의 이름으로 사용할 수 없는 단어
// let, const, function, if, new, import


JS 함수 기초

function hello() {
  const message = 'Hello World!'
  console.log(message)
}
hello()
hello()
hello()
// 명령을 묶어서 간편하게 반복 사용 가능
// 만약 함수를 사용하지 않고 3번 반복한다면 변수 3개(message1, message2, message3)에 값을 넣고 각 변수들을 모두 실행해야 함

function hello(name) {
  const message = 'Hello '+ name + '!'
  console.log(message)
}
hello('A')
hello('B')
hello('C')
// 함수에 입력되는 값인 인수(A)를 매개변수(name)에 넣어 출력값을 변경

function hello(name) {
  const message = 'Hello '+ name + '!'
  console.log(message)
  return // 함수를 종료, 이 뒤에 있는 내용은 출력되지 않음
  console.log('이 부분은 실행되지 않아요!')
}
hello('D')
hello('E')
// function 내에 if를 넣어 특정 조건 달성 시 함수 종료하게 만들 수 있음


JS로 HTML 제어하기

const itemEls = document.querySelectorAll('.item') 
// html 파일에서 .item 클래스를 가진 css 선택자를 모두 찾아서 itemEls 변수에 할당, 총 3개 있을 예정
//즉 HTML 요소를 찾아 변수에 저장

const btnEl = document.querySelector('.btn') 
// html 파일에서 .btn 클래스를 가진 css 선택자를 찾아서 btnEls 변수에 할당, 총 1개 있을 예정

const colors = ['blue', 'orange', 'tomato']

btnEl.addEventListener('click', function () { 
  // function () = 익명 함수, 지정된 함수의 이름이 없음
  itemEls.forEach(function (itemEl, index) { 
    // for Each itemEls마다 index 넘버 추가, 찾은 HTML 요소의 개수만큼 함수를 반복해서 run function
    console.log(index, itemEl) // itemEl와 각 index 출력
    itemEl.style.backgroundColor = colors[index] 
    // 각 itemEl의 index와 같은 colors 변수의 배경색을 itemEl에 적용, HTML 요소에 CSS 지정
  })
  btnEl.innerHTML = '<span>클릭했어요!</span>' 
  // 버튼을 클릭한 후 HTML 문구를 변경, span으로 감싸서 css가 적용되게 만듦, HTML 요소의 내용으로 문자를 추가
}) // btnEls 변수에 click 액션을 하면 function으로 정의한 이벤트가 발생, HTML 요소를 '클릭'하면 함수를 실행

위 함수의 최종 결과
123


위 JS 실행에 사용한 HTML

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <link rel="stylesheet" href="./main.css">
  <script defer src="./main.js"></script>
</head>
<body>
  <div class="container">
    <div class="item">1
    </div>
    <div class="item">2
    </div>
    <div class="item">3
    </div>
  </div>
  <div class="btn">클릭하세요</div>
</body>
</html>


위 JS 실행에 사용한 CSS

.btn {
   width: 150px;
   height: 40px;
   background-color: rosybrown;
   border-radius: 10px;
   color: white;
   display: flex;
   justify-content: center;
   align-items: center;
   cursor: pointer; /* 마우스 커서가 올라갔을 때 화살표에서 손가락으로 변경 */
   transition: 0.2s;
}

.btn:hover {
   background-color: blue;
}

.btn span {
   font-size: 22px;
   font-weight: 700;
}


Categories:

Updated: