ECMA International이 ECMA-262 기술 규격에 따라 정의하고 있는 표준화된 스크립트 프로그래밍 언어
ES6
default parameter
class
arrow function
const
let
JavaScript란?
동적인 웹 페이지를 작성하기 위하여 사용되는 언어
웹 표준 프로그래밍 언어
모든 웹 브라우저에서 자바스크립트 지원
웹 브라우저 뿐 아니라 스마트폰용 애플리케이션 개발 등 각종 분야에서 능력과 가치를 인정받고 있음
초기에는 브라우저에 내장되어 제한된 기능만 지원하였으나, 현재 Ajax(Asynchronous JavaScript and XML) 기술과 함께 영향력 증가
전 세계에서 가장 많이 사용되는 언어
기능
HTML이 지원하지 못하는 다양한 기능 지원
동적 움직임 / 이벤트 발생 처리 / 경고 메시지 출력 / 데이터 유효성 확인 / 멀티미디어 기능
Ajax를 이용하여 새로운 내용을 동적으로 로딩하거나 서버에 전송하여 동적인 페이지 생성
애니메이션 기능 지원
브라우저 사용자의 특성(웹 페이지 탐색 움직임, 게시물 읽을 때의 습관 등)에 대한 정보를 서버로 전송하여 웹 분석, 사용자 동작 트래킹 분석, 웹서비스 개인화 등에 사용
자바 스크립트 실행
스크립트 언어이기 때문에 컴파일 되지 않고
인터프리터(해석기)를 통해 웹 브라우저에서 한 줄씩 바로 실행
스크립트 언어(인터프리팅 언어)
독자적으로 실행되지 않고 다른 프로그램에 내장되어 사용
소스코드를 컴파일하지 않고 한 줄씩 인터프리터를 통해 바로 실행
대표적인 인터프리팅 언어: C
자바 스크립트의 용도
이벤트에 반응하는 동작 구현
HTML 요소들을 동적으로 변경
사용자가 입력한 값들을 검증
게임이나 애니메이션 / 멀티미디어 기능 구현
Ajax 기술을 사용하여 서버와 데이터를 비동기적으로 교환
비동기식 처리
서버 측에 데이터를 요청한 후 데이터 수신이 완료될 때까지 기다리지 않고 다른 작업 진행이 가능한 기술
자바스크립트에서의 변수
프로그램 실행 중에 값을 저장하기 위한 메모리 내의 임시 기억 장소
자바스크립트에서 식별자(변수명, 함수명 등 명명 규칙)
시작은 반드시 영문자나 _ 사용. 숫자로 시작하지 않음
대소문자 구별
키워드 사용할 수 없음
특수문자, 공백 사용할 수 없음
한글 사용 가능(영문 사용 권장 - 한글 사용 안 함)
의미 있는 단어 사용 (name, address, age)
변수 선언
var
let
const
EX6 이후 보완하기 위해 추가된 변수 선언 방식: let과 const
변수 선언 특징
변수를 필요한 곳에 사용하면 자동으로 생성되기 때문에 반드시 선언하지 않아도 됨
변수의 데이터 타입은 실행 시 결정 (동적 타이핑)
명시적으로 선언하는 경우에는 예약어 var 사용(명시적 선언 권장)
var total; // 명시적 선언
var name, address; // 여러 개 선언 가능
var price = 0; // 변수 초기화(선언과 동시에 값 저장)
var name = "홍길동";
tel = "010-1234-5678";
정적 타이핑 언어 Vs. 동적 타이핑 언어
정적 타이핑 언어
변수의 자료형을 컴파일 시에 결정
C, C++, Java 등
선언한 변수의 자료형에 따라 값 결정
int a; // 변수의 선언. 정수형(4바이트 값을 저장하기 위한 공간 확보)
int a = 10; // 변수의 선언과 동시에 값 저장 -> 변수 초기화
선언 - > 컴파일러에게 알리는 것 -> 실행 시 메모리 할당받기 위해 (운영체제로부터 필요한 만큼 확보하기 위함)
동적 타이핑 언어
변수의 자료형을 실행할 때 결정
자료형 없이 변수에 값 저장
JavaScript, Python 등
variable.html
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>JavaScript</title><scripttype="text/javascript">// 명시적 선언var num=10, pi=3.14;
var ch = 'a';
var name = "홍길동";
// 명시적으로 선언하지 않고 값 저장
address = "서울시 강남구";
nation = '대한민국'; // 문자열에 작은 따옴표 사용 가능document.write(num); // 변수 값 출력document.write("<br>");
document.write(ch);
document.write("<br>");
document.write(name);
document.write("<br>");
document.write(address);
document.write("<br>");
document.write(nation);
</script></head><body></body></html>
변수의 유형
멤버 변수 (전역 변수)
전역 범위(<script> 태그 바로 아래)에 명시적으로 선언되거나
명시적으로 선언하지 않고 사용하는 모든 변수
var의 유무에 관계없이 전역 변수
자바스크립트 코드 내 모든 곳에서 사용 가능
지역변수
함수 내에서 var을 붙여서 선언된 변수
함수 내에서만 사용 가능
함수 내에서 var을 붙이지 않고 사용하는 변수는 모두 전역 변수로 간주
variableLocal.html
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>JavaScript 지역변수</title><scripttype="text/javascript">functionf1() {
// 지역변수 : 함수 내에서 var 붙인 변수var localVal1 = 100;
document.write(localVal1 + "<br>");
}
f1();
// 함수 밖에서 불렀기 때문에 출력되지 않음//document.write(localVar1 + "<br>");functionf2() {
// 함수 내에서 var 안붙이고 선언된 변수 -> 함수 밖에서도 사용 가능
localVar2 = 200;
}
f2();
document.write(localVar2 + "<br>");
functionf3() {
// 지역변수 : 함수 내에서 let 붙인 변수// 함수 내에서만 사용 가능let localVar3 = 300;
}
f3();
document.write(localVar3 + "<br>"); // 오류</script></head><body></body></html>
variableGlobal.html
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>JavaScript 전역변수 / 지역변수</title><scripttype="text/javascript">// var의 유무 관계없이 전역변수// 어디서든 사용 가능var x=5, y=10; // var이 있는 명시적 선언. 전역 변수
total=0; // var 없이 값 저장. 전역 변수functionf1() { // 모든 전역변수 사용 가능
x = x + y;
document.write(x + "<br>");
}
functionf2() { // 모든 전역변수 사용 가능
total = x + y;
document.write(total + "<br>");
}
f1();
f2();
</script></head><body></body></html>
var Vs let
var과 let의 차이점은 scope
var : function 단위의 scope
let : { }(block) 단위의 scope
차이점 2
var은 동일 변수명을 여러 개 선언해서 사용해도 오류 없음
let은 이미 선언된 변수명은 다시 사용할 수 없음
const : 상수의 개념 (값 변경 불가)
var_let.html
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>JavaScript var Vs. let</title><scripttype="text/javascript">// 동일 변수명 중복 선언 가능 (오류 없음)var name = "홍길동";
console.log(name);
var name = "이몽룡";
console.log(name);
// 동일 변수명 중복 선언 불가능let person = "홍길동";
console.log(person);
let person = "이몽룡";
console.log(person);
</script></head><body></body></html>
var_let2.html
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>JavaScript var Vs. let</title><scripttype="text/javascript">/*
sum = 0;
for(var i = 0; i<10;i++){
sum += i;
}
console.log(i); // for문 밖에서 i 사용 가능
*/
sum = 0;
for(let i = 0; i<10;i++){
sum += i;
}
console.log(i); // for문 밖에서 i 사용 불가 -> block 안에서만 사용 가능// let : if문 안에서 선언했으면 if문 안에서만 사용 가능</script></head><body></body></html>
const.html
const : 상수 개념. 값을 변경할 수 없음
값이 변경되지 않을 경우 변수로 사용 가능
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>JavaScript const</title><scripttype="text/javascript">let name = "홍길동";
console.log(name);
name = "이몽룡";
console.log(name);
const address = "서울";
console.log(address);
// const : 상수 개념. 값을 변경할 수 없음const address = "캐나다";
console.log(address);
</script></head><body></body></html>
호이스팅(Hoisting)
선언문 이전에 변수를 사용하는 것
var로 선언된 변수는 사용 가능
let으로 선언된 변수는 사용 불가능
<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><title>JavaScript 호이스팅</title><scripttype="text/javascript">// 호이스팅 : 선언문 이전에 변수 사용// let은 사용 불가// var 사용 가능console.log(name);
var name = "홍길동";
</script></head><body></body></html>