- ECMAScript(ES)가 원래 명칭이다.
<script>태그 내부에 작성한다.<script>태그의 위치는 정해져 있지 않다.(<head>,<body>모두 가능)- HTML 구성 요소의 생성/삭제/수정 작업을 할 수 있다.
//한줄 주석/* */여러줄 주석
number: 정수/실수 구분이 없다.
NaN(Not a Number), Infinity/-Infinity(+0/-0으로 나눌 때 발생)string: 문자/문자열 구분이 없다.
작은 따옴표('')와 큰 따옴표("")를 모두 사용할 수 있다.boolean: true/falsenull: 변수에null을 저장한 경우
(없는 값을 저장한 경우, 초기화를 위해 저장한 경우)
undefined : 변수에 어떤 값도 저장된 적이 없는 경우
- Dynamic type(동적 타입)이다.
- 변수를 선언할 때 자료형이 결정되지 않는다.
- 변수에 값을 저장할 때 자료형이 결정된다.
- 변수에 저장된 값을 바꾸면 자료형도 함께 바뀐다.
| scope | 변수 선언 | 초기화 | 재선언 | 용도 | |
|---|---|---|---|---|---|
| 1) var | function level | 생략 가능 | 생략 가능 | 가능 | 함수, 전역 변수 |
| 2) let | block level({}) | 생략 불가능 | 생략 가능 | 불가능 | 지역 변수 |
| 3) const | block level({}) | 생략 불가능 | 생략 불가능 | 불가능 | 상수 |
ES6부터 let const 선언이 추가됨.예제
<script> // 변수 선언(초기화가 없으면 undifined) var a; console.log(a, a + 1); // undefiend, NaN // 변수 재선언(값이 저장되면서 타입이 결정됨) var a = 10; console.log(typeof a, a, a / 0); // number, 10, Infinity // 저장된 값이 바뀌면 타입도 바뀜 a = 'tom'; console.log(typeof a, a); // 변수 선언 생략 b = true; // var 키워드 없이 변수로 인식 console.log(typeof b, b); </script>
경고창
alert(출력메시지)
브라우저 화면 출력
document.write(출력메시지)
콘솔 출력 (F12 - Console 탭)
console.log(출력메시지)
대화상자
confirm() 메소드 : true, false로 작동한다.
if()와 함께 사용예제
alert('Hello World'); document.write('<h1>Hello World</h1>'); console.log('Hello World');
- number -> string
String(number)함수number + ''- string -> number
Number(string)함수parseInt(string)함수parseFloat(string)함수
- JavaScript 인터프리터가 함수나 변수의 선언 이전에 미리 메모리 공간을 할당하는 것을 의미한다.
var키워드로 선언한 변수는 호이스팅 시 undefined 값을 가진다.let키워드로 선언한 변수는 호이스팅 시 초기화되지 않는다.- 함수의 정의보다 함수의 호출을 먼저 할 수 있다.
- 변수의 선언보다 변수의 사용을 먼저 할 수 있다.
- 변수의 선언과 초기화가 함께 진행되는 경우 선언부와 초기화를 분리하여 처리된다.
// var 키워드 호이스팅 - 1 x = 10; console.log(x); var x; // 변수 선언은 다른 코드보다 항상 먼저 처리된다. 이걸 호이스팅이라고 한다. // var 키워드 호이스팅 - 2 console.log(y); // undefined (var 키워드로 호이스팅 된 변수는 undefined로 초기화된다.) var y = 20; // var y; y = 20; 으로 분리해서 호이스팅된다. console.log(y); // 20 // var 키워드 호이스팅 - 2(아래 순서로 실행되는 것으로 이해하기) // var y; → var 키워드로 호이스팅 된 변수는 undefined로 초기화된다. // console.log(y); → undefiend // y = 20; → 20을 저장 // console.log(y); → 20
// let 키워드 호이스팅 console.log(z); // Reference Error 발생 (let 키워드로 호이스팅 된 변수는 초기화되지 않기 때문에 접근 시 오류가 발생함) let z = 30; // let z; z = 30; 으로 분리해서 호이스팅된다. console.log(z); // let 키워드 호이스팅(아래 순서로 실행되는 것으로 이해하기) // let z; → let 키워드로 호이스팅 된 변수는 초기화되지 않는다. // console.log(z); → Reference Error 발생 // z = 30; → 30을 저장 // console.log(z); → 30
| 산술 연산자 | 예시 | |
|---|---|---|
| 더하기 | + | |
| 빼기 | - | |
| 곱하기 | * | 2 * 3 == 6 |
| 제곱 | ** | 2 ** 3 == 8 (2의 3제곱) |
| 나누기 | / | 5 / 2 == 2.5 |
| 나머지 | % | 5 % 2 == 1 |
| 몫 | 함수 필요함 | 예 : parseInt(5 / 2) |
| 증감 | ++, -- |
| 대입/복합 대입 연산자 | |
|---|---|
| 대입 | = |
| 복합대입 | +=, -=, *=, **=, /=, %= |
| 비교 연산자 | |
|---|---|
| 크다 | > |
| 작다 | < |
| 크거나같다 | >= |
| 작거나같다 | <= |
| 같다 (모든 타입에서 사용 가능함) | -------------------------------- |
| (1) 값이 같다 | == (1 == '1' 결과는 true) |
| (2) 값과 타입이 같다 | === (1 === '1' 결과는 false) |
| 같지않다 (모든 타입에서 사용 가능함) | -------------------------------- |
| (1) 값이 다르다 | != |
| (2) 값과 타입이 다르다 | !== |
- 논리 AND :
&&- 논리 OR :
||- 논리 NOT :
!
(조건식) ? true일 때 : false일 때
| 문자열 연산자 | |
|---|---|
| + | |
| + 이외 산술 연산자 | 산술 연산으로 처리 |
연습문제)
최저 시급 : 9,620원
8시간까지는 최저 시급을 받고, 8시간 초과 근무 시 최저 시급의 1.5배를 받는다.
하루 n시간 일하면 일당 얼마일까요?
const hourlyWage = 9620; // 시급(상수) let workingHours = 12; // 근무시간(변수) let regularPay; // 정규 수당 let extraPay; // 초과 수당 regularPay = hourlyWage * workingHours; extraPay = (workingHours <= 8) ? 0 : (workingHours - 8) * hourlyWage * 0.5; let message = '시급 ' + hourlyWage + ', 근무시간 ' + workingHours + ', 일당 ' + (regularPay + extraPay); alert(message);
HTML 구성 요소(HTMLCollection/HTMLElement, NodeList/Node)를 객체(Object)로 저장하고 처리할 수 있는 방식이다.
HTML 구성 요소(HTMLCollection/HTMLElement, NodeList/Node) 알아내기
id 속성으로 알아내기
var 변수 = document.getElementById('아이디')class 속성으로 알아내기
var 배열 = document.getElementsByClassName('클래스')tag 이름으로 알아내기
var 배열 = document.getElementsByTagName('태그')선택자로 알아내기
var 변수 = document.querySelector('선택자')선택자로 알아내기
var 배열 = document.querySelectorAll('선택자')반드시 HTML 구성 요소(HTMLCollection/HTMLElement, NodeList/Node)를 먼저 만들어야 한다.
<script>태그는 나중에 만든다.
id : 동일한 id 존재 불가능, 변수를 선언해서 받아낸다.var box1 = document.getElementById('box1'); console.log(box1); var box2 = document.getElementById('box2'); console.log(box2); var box3 = document.getElementById('box3'); console.log(box3);
class : 여러개 존재 가능, 배열로 받아낸다.var primary_box = document.getElementsByClassName('primary_box'); console.log(primary_box);
var div = document.getElementsByTagName('div'); console.log(div);
// 선택자를 이용해 id="box1", id="bpx2', id="box3" 알아내기 var box1 = document.querySelector('.wrap > #box1'); // id는 .wrap 명시하지 않아도 됨. console.log(box1); var box2 = document.querySelector('#box2'); console.log(box2); var box3 = document.querySelector('#box3'); console.log(box3); // 선택자를 이용해 class="primary_box" 알아내기 var primary_box = document.querySelectorAll('.wrap > .primary_box'); // .wrap 명시 해주는것을 권장 console.log(primary_box);
textContent<p id="p1">Hello World</p> <script> var p1 = document.getElementById('p1'); console.log(p1.textContent); // Hello World /* 동일한 방법 console.log(document.getElementById('p1').textContent */ // 내부 텍스트 바꾸는 법 (원래 있던 텍스트는 덮어쓰기 된다.) p1.textContent = '안녕하세요'; // Hello World -> 안녕하세요 p1.textContent += ' 반갑습니다'; // 안녕하세요 반갑습니다 (누적) </script>
innerHTML<p id="p2"><strong>Hello World</strong></p> <script> var p2 = document.getElementById('p2'); console.log(p2.innerHTML); // <strong>Hello World</strong> 텍스트만 나오는게 아닌 내부 구성요소까지 모두 출력 p2.innerHTML = '<em>안녕하세요</em>'; p2.innerHTML += '<mark>반갑습니다</mark>'; </script>
태그에 명시된 속성을 말한다.
태그 속성 메소드
getAttribute('속성')setAttribute('속성', '변경할값')removeAttribute('속성')attribute와 비슷하지만 다르다. | 예시) | attribute | property | |
|---|---|---|---|
| id="box" | id="box" | id: box | 1) attribute와 property에서 부르는 명칭이 동일한 경우 |
| class="p" | class="p" | className: p | 2) 속성 이름이 다른 경우 |
| checked="checked" | checked="checked" | checked: true | 3) 속성의 이름은 같지만 저장되는 값이 다른 경우 |
객체.속성객체['속성']
(객체 속성을 조작하는 작업을 수행할 땐 메소드를 호출하지 않는다.)
- property 확인 :
F12 - [Elements] 탭 - [Properties] 탭
문서 객체의
style속성을 이용한다.
style속성으로 지정한 CSS 속성은inline방식으로 적용된다.
(JavaScript로 지정한 CSS는 항상 적용된다.)
style속성 뒤에 CSS 속성을 작성한다.
- 하이픈(
-)을 제거한 뒤 camel case 방식으로 CSS 속성을 바꾼다.
예시)객체.style.fontSize = '32px'- CSS 속성을 문자열(
string) 형식으로 그대로 사용한다.
예시)객체.style['font-size'] = '32px'
✍️ JavaScript는 특성상 문자열 내부에 큰따옴표(
"")가 들어가는 경우가 많기 때문에 문자열을 표시할 때 작은따옴표('') 사용을 권장함.

날씨가 너무.. 꾸리꾸리...