유데미 JavaScript 완벽 가이드: 초급+고급 마스터 과정
;
사용은 선택적let userName = 'Max';
userName = 'Manu';
let
을 사용해 변수를 선언하고 다음부터는 변수이름만 사용 가능userName
의 값을 Max로 선언했다가 Manu로 재할당const totalUsers = 15;
totalUsers = 20; // Error
const
를 사용해 상수를 선언하고 다음부터는 상수이름만 사용 가능totalUsers
의 값을 15로 선언하고 20으로 재할당하려고 하면 에러(상수값은 한 번 설정 후 바꿀 수 없음)$
_
허용\n
을 사용하면 화면상에서 줄바꿈을 표현할 수 있다.function greetUser(name) {
alert('Hi' + name);
}
greetUser('Max');
원할 때 인자를 넘겨줄 수 있다.
모든 함수는 이름이 같은 함수를 실행하더라도 서로 무관하게 각각 실행된다.
JS는 실행 전에 파일 전체를 읽어 사용된 함수를 전부 찾아낸다.
함수에 return값은 옵션이다.
함수에 인자는 옵션이다.
greetUser 함수 내에서 userName을 참조할 때 항상 로컬 섀도우 변수 참조
함수를 종료시키는 return
함수 직접 실행: 함수를 바로 실행시키고 싶을 때는 add()
함수 간접 실행: 바로 실행시키지 않고 미래의 어느 시점에 실행되길 원하면 add
섀도우 변수: 함수에서 선언된 지역 변수이면서 전역 변수로도 존재하는 변수(이름이 같으면)
3 + '3' # 33
3 - '3' # 0
3 / '3' # 1
3 * '3' # 9
let logEngtry = []; //선언
let logEntry = {}; // 선언
스크립트가 길어지면 로드하고 실행하는데 시간이 오래걸리고 구분 분석해야할 HTMl 코드가 길어진다.
그래서 모든 코드가 구문 분석 될 때까지 기다렸다가 스크립트 로딩을 하게 되면 안 좋다.
구문 분석된 콘텐츠에 dependency하기 때문에 구분 분석 후에 실행하고자 하는 것인데 스크립트 실행은 하지 않더라도 미리 로딩하거나 서버에서 다운로드 하는 것이 좋다.
또한 로컬이 아닌 실제 웹 서버를 사용하게 되면 더 느려진다.
HTML 파일 전체가 구문 분석 된 후에 로딩을 시작하는 것이 아니라 최대한 빨리 스크립트를 로드하고 구문 전체가 분석된 후에 실행하도록 해야한다.
스크립트 파일이 HTML에 의존할 경우
스크립트 파일을 head에 넣고 스크립트 속성으로 defer
키워드를 준다.
defer는 브라우저에 스크립트를 미리 다운로드 해놓고 HTMl 구문 분석이 완료된 경우에만 스크립트를 실행하도록 함.
스크립트 실행 순서가 보장된다.
스크립트 파일이 HTML에 의존하지 않을 경우
스크립트 파일을 head에 넣고 스크립트 속성으로 async
키워드를 준다.
defer와는 다르게 스크립트가 다운로드 되면 바로 실행된다. HTML 구문분석은 스크립트 파일이 실행되는 동안 일시정지한다.
가능한 한 빠르게 스크립트를 사용해야할 경우 async를 사용한다.
스크립트 실행 순서가 보장되지 않는다. 다운로드 되는 것부터 실행.
defer, async 모두 다운로드할 파일이 있는 \