모던 JavaScript 튜토리얼을 보며 몰랐던 내용을 정리합니다.
script 태그에 src속성으로 경로를 지정해주면 script태그안에 있는 코드들은 실행되지 않는다. 간단하게 작성할거 아니면 파일을 분리해서 작성하는게 좋다. 왜냐면 파일을 분리하면 브라우저가 스크립트를 다운받아 캐시에 저장해놓는다. 여러 페이지에 동일한 스크립트를 사용하는 경우, 브라우저는 페이지가 바뀔 때마다 스크립트를 새로 다운 받지 않고 캐시에서 가져온다. 그렇게 되면 트래팩이 절약되고 웹 페이지 속도도 빨라진다.
<script src="./1.Helloworld.js">
alert('자바스크립트!');
</script>
위 코드의 경우 1.Helloworld.js파일에 있는 스크립트만 실행되고 alert('자바스크립트!');은 실행되지 않는다.
세미콜론을 생략해도 되지만 자바스크립트에서 자동으로 해주지 않는 경우가 있으므로 써주는게 좋다. 줄 바꿈이 있으면 '암시적'으로 세미콜론이라 해석한다. 하지만 추정 못하는 경우도 있다.
alert("에러가 발생합니다.")
[1, 2].forEach(alert)
이 경우 자바스크립트는 [...]앞에 세미콜론이 있다고 가정하지 않기 때문에
에러가 발생한다.
use strict' 가 스크립트 최상단에 오면 스크립트 전체가 '모던'한 방식으로 동작한다.
ECMAScript5(ES5)에서 새로운 기능 추가 되고 기존 기능 일부가 변경되었다. 기존 기능을 변경했기 때문에 하위 호환성 문제가 생길 수 있다. 그래서 기본 모드에서는 활성화 되지 않고 엄격모드(use strict)에서만 변경사항이 활성화 되도록 했다.
함수 본문 맨 앞에 써서 함수에만 적용되도록 할 수도 있다.
하지만 보편적으로는 스크립트 최상단에 적는다.
최신 문법인 class와 모듈을 사용한다면 use strict를 생략해도 자동적으로 적용된다.
변수명으로는 오직 문자, 숫자 그리고 기호 $와 만 들어갈 수 있다.
첫글자는 숫자가 될 수 없다.
let $ = 1;
let = 2; 도 가능은 하다.
변수명은 대소문자를 구별한다.
apple과 APPLE은 다른 변수이다.
예약어(reserved name)은 변수명으로 사용할 수 없다. 이미 자바스크립트 내부에서 사용 중이기 때문
예) let, class, for, return, function, delete, do....
예전 자바스크립트에서는 let 없이도 값을 할당해 변수를 생성하는 것이 가능했다. 그래서 use strict를 쓰지 않으면 과거 스크립트와 호환성을 유지할 수 있기 때문에 이 방식을 사용할 수 있다.
나쁜 관습이므로 사용안하는게 좋다.
num = 5
alert(num); // 5
변화하지 않는 변수를 선언할 땐, let 대신 const를 사용
const로 선언한 변수를 '상수(constant)'라고 부른다.
대문자 상수는 런타임에 값을 아는 게 아니라 실행 전에 이미 값을 알고 있고 코드에서 직접
그 값을 쓰는 경우에 사용한다.
const BIRTHDAY = '18.04.1982';
const age = someCode(BIRTHDAY);
birthday의 경우 실행 전 이미 값을 알고 있고 변하지 않을 값이다.
하지만 age는 런타임에 계산되니까 대문자 상수에는 적합하지 않다.