웹 페이지에 생동감을 불어넣기 위해 만들어진 프로그램.
JS는 브라우저뿐만 아니라 서버에서도 실행 가능, 자바스크립트 엔진이라 불리는 특별한 프로그램이 들어있는 모든 디바이스에서도 동작한다.
특히 브라우저에는 엔진 (자바스크립트 가상 머신)이 내장되어 있다.
V8 - Chrome, Opera
SpiderMonkey- Firefox
IE는 버전에 따라 'Trident’나 'Chakra’라 불리는 엔진을 사용. 'ChakraCore’는 Microsoft Edge에 사용되며, 'SquirrelFish’는 Safari에 사용된다.
JS로 작성한 프로그램, 웹페이지의 HTML 안에 작성할 수 있는데, 웹 페이지를 불러올 때 스크립트가 자동으로 실행된다.
특별한 준비나 컴파일 없이 보통의 문자 형태로 작성 및 실행이 가능하다.
- HTML / CSS와 완전히 통합될 수 있음
- 간단한 일은 간단하게 처리할 수 있게 해줌
- 모든 주요 브라우저에서 지원하고 기본 언어로 사용됨
ECMA-262 명세서: JS와 관련된 정보를 담은 공식 문서, 매년 새로운 버전이 업데이트 되기 때문에 참고하기에는 적합하지 않음.
Mozila 재단의 MDN JS: 다양한 예제와 정보, 특정 함수나 매서드에 대한 깊이 있는 정보를 얻기에 좋음
끊임없이 발전하는 언어기 때문에 특정 브라우저나 엔진이 기능을 지원하는지 확인해야 한다.
경량 에디터: 속도가 빠르고 단순해서 빠르게 수정할 수 있음
ex) Atom, Visual Studio Code, Sublime text...
웹 페이지에 자바스크립트 코드를 추가하기 위해서 사용하는 태그. type, language 속성은 더 이상 필수가 아님.
스크립트 안에 삽입할 내용이 너무 많으면 외부 스크립트 방식을 사용할 수 있다. 따로 파일로 소분하여 저장했다가 파일 경로로 가져올 수 있음.
<script src="/path/to/script.js"></script>
어떤 작업을 수행하는 문법 구조 + 명령어를 의미.
코드에 원하는 만큼 작성, 세미콜론으로 구분.
한 줄짜리 주석은 두 개의 슬래시 //로 시작, 여러 줄은 /* */
으로 끝난다. 단축 키는 보통 ctrl + /, 여러 줄은 ctrl + shift + /
자바스크립트는 기존의 기능을 변경하지 않으면서 새로운 기능이 추가됨, 기존에 작성한 코드는 절대 망가지지 않지만 창시자들이 했던 실수나 불완전한 결정이 언어 안에 영원히 박제됨.
ES5가 등장하기 전까지 지속되었다. 그러나 ES5에서는 새로운 기능이 추가되고 기존 기능 중 일부가 변경되었다. 이 변경사항 대부분은 ES5의 기본 모드에서 활성화가 되지 않음.
대신 use strict
를 사용해 엄격 모드를 활성화 했을 때만 이 변경 사항이 활성화 된다.
use strict 가 스크립트 최상단에 오면 스크립트 전체가 모던한 방식으로 동작한다. 반드시 최상단에 위치해야 한다.
브라우저 콘솔에 사용할 때는 shift + enter키로 줄바꿈 하여 사용하면 됨.
" 코드를 클래스와 모듈을 사용해 구성한다면 "use strict"를 생략해도 됩니다. 그런데 아직은 이 둘을 배우지 않았으니 "use strict"를 귀한 손님처럼 모시도록 하겠습니다. "
데이터를 저장할 때 쓰이는 이름이 붙는 저장소.
let 키워드를 사용하여 변수를 생성한다. 할당 연산자 =를 사용해 변수 안에 데이터를 저장한다.
let 대신 var
var는 let 과 거의 동일하게 동작한다. 오래된 방식이기 때문에 후에 다룸.
변수는 값이 변경될 수 있기 때문에 원하는 만큼 값이 변경 가능하다.
변수 명명 규칙은 다음과 같다.
let Hello = 'Hello world!';
let message;
// Hello의 'Hello world' 값을 message에 복사합니다.
message = Hello;
// 이제 두 변수는 같은 데이터를 가집니다.
alert(Hello); // Hello world!
alert(message); // Hello world!
변화하지 않는 변수를 선언할 때에는 let 대신 const 를 사용한다. const로 선언한 변수를 상수 (constant)라고 부른다.
정수 및 부동소수점 숫자(floating number) 을 나타낸다.
그 외에 Infinity, -Infinity, NaN의 특수 숫자 값이 포함된다.
내부 표현 방식 때문에 자바스크립트에선 (253-1)(9007199254740991) 보다 큰 값 혹은 -(253-1) 보다 작은 정수는 '숫자형’을 사용해 나타낼 수 없다.
BigInt 형의 값은 끝에 n을 붙이면 만들 수 있다.
자바스크립트에선 문자열을 따옴표로 묶는다.
`Hello`
백틱은 변수나 표현식을 감싼 후 ${...} 안에 넣어주면 원하는 변수나 표현식을 문자열 중간에 손쉽게 쓸 수 있다.
true 나 false 두 가지 값밖에 없는 자료형.
존재하지 않는 값, 비어있는 값, 알 수 없는 값
값이 할당되지 않은 상태를 나타낼 때 사용.
변수는 선언했지만 값을 할당하지 않았다면 해당 변수에 undefined 가 자동으로 할당된다.
객체형은 특수한 자료형이다.
객체형을 제외한 다른 자료형은 한 가지만 표현할 수 있기 때문에 원시 자료형이다. (primitive)
그러나 객체는 데이터 컬렉션이나 복잡한 개체 (entity) 를 표현할 수 있다.
심볼형은 객체의 고유학 식별자를 만들 때 사용된다.
두 가지 형태로 사용하여 인수의 자료형을 확인할 수 있다. 괄호를 사용하면 합쳐진 자료형의 결과의 자료형 또한 알 수 있다.
함수가 실행되면 사용자가 '확인(ok) ' 버튼을 누를 때까지 메시지를 보여주는 창이 뜬다. 이 메세지 창을 모달 창이라고 부른다.
모달은 페이지의 나머지 부분과 상호작용이 불가능하다는 뜻을 가지고 있다.
alert("Hello");
두 개의 인수를 받는다. 함수가 실행되면 텍스트 메세지와 입력 필드, 확인 및 취소 버튼이 있는 모달 창을 띄워준다.
prompt 함수는 사용자가 입력 필드에 기재한 문자열을 반환합니다. 사용자가 입력을 취소한 경우는 null이 반환됩니다.
let age = prompt('나이를 입력해주세요.', 100);
alert(`당신의 나이는 ${age}살 입니다.`); // 당신의 나이는 100살입니다.
confirm 함수는 매개변수로 받은 question(질문)과 확인 및 취소 버튼이 있는 모달 창을 보여준다. 확인을 누르면 true, 그 외에는 false 를 반환한다.
let isBoss = confirm("당신이 주인인가요?");
alert( isBoss ); // 확인 버튼을 눌렀다면 true가 출력됩니다.