자바스크립트
기본
- 자바스크립트 정식 명칭 ECMAScript
- 자바스크립트 기본문법
- 대소문자구분
- 유니코드 기반, 영어 아닌 다른 언어도 코드 안에서 사용 가능
- 유니코드 - 유사이래 모든!!(고대한글도) 문자를 표현하는게 목표
- 명령어는 문장을 구성됨 typeof 등
- 스페이스, 탭, 줄바꿈 문자는 공백(white-space)라 부름
<script type="text/javascript">마임타입!</script>
- 스크립트 코드 위치에 따라 눈에 보이는 페이지 로딩 속도가 달라보임!
- 스크립트가 위쪽에 있으면 아래 html문서가 로딩되지 않아서 늦게 뜨는것처럼 보임
스크립트 속성
- type
- type ="text/javascript"
- 생략가능
- src
- 외부스크립트 주소
- charset
- UTF-8, euc-kr 과 같은 스크립트의 Character Set를 지정
- async
- defer
=> async와 defer 속성이 같이 사용될 경우 async가 높은 우선순위를 갖음
<script async src = “js/script.js"></script>
<script defer src = “js/script.js"></script>
주석
- // 한줄
- /* */ 여러줄 주석
엄격모드 발동
- 문법이 엄격함 지키지않으면 오류발생 :
'use strict';
일반 vs 엄격 모드 때의 this가 가르키는것
// 일반적인 방법 (function(aa){ console.log('this는 뭐니',this); })(this); ==> this는 뭐니 ? Window {speechSynthesis: SpeechSynthesis, caches: CacheStorage, localStorage: Storage, sessionStorage: Storage, webkitStorageInfo: DeprecatedStorageInfo…} // 엄격모드 발동 (function(aa){ 'use strict' console.log('this는 뭐니',this); })(this); ==> this는 뭐니? undefined (function(aa){ 'use strict' console.log('this는 뭐니',this); console.log('aa는 뭐니',aa); })(this); ==> 출력 this는 뭐니 undefined ==> 출력 aa는 뭐니 Window {speechSynthesis: SpeechSynthesis, caches: CacheStorage, localStorage: Storage, sessionStorage: Storage, webkitStorageInfo: DeprecatedStorageInfo…} undefined
dot syntax
//자바스립트 문장은 점으로 연결되어 이루어진다.
주어.동사('목적어');
console.log('뭐야');
스크립트 로딩시 주의
- JS는 통역언어 : 브라우져 엔진이 읽어서 가져오는언어 그래서 느려
- head나 body 요소 안에 작성
- head나 body 요소밖에 작성해도 동작은 되지만 웹표준에 어긋남
- body 요소 안 끝부분에 선언
- html문서가 다 읽히고 나서 스크립트 읽어서 실행 되어야 모두 동작
- 상단에 들어가면 html문서가 읽히고 출력은 되어보이지만 실제적으론 스크립트 구문이 먼저 읽힐 당시엔 html문서를 찾을수 없어서 실행이 안됨
- 만약 무조건 head 안에 작성해야 한다면 불러올 스크립트에 onlode 이벤트 발생 시켜야함
window.onload = function(){};
- 블러오는 순서가 매우 중요
// 변수만 모아 놓은 파일
<script src="js/var.js"></script>
// 실행문들,, : 이것이 변수파일보다 위로 올라간다면 변수를 읽어오지 못해서 변수를 찾을수 없음
<script src="js/write.js"></script>
자바스크립트 호출 실행 흐름
<!DOCTYPE html>
<html lang="ko-KR">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Comㅌpatible" content="IE=Edge">
<script>alert('title 위에서 실행');</script>
<title>자바스크립트 호출 실행 흐름</title>
<style type="text/css">
body{background-color: pink; color: #4C4C4C;}
</style>
<script>alert('style 아래에서 실행');</script>
</head>
<body>
<h1>요소 먼저 읽지만 js구문 만나서 출력하지 않고 js끝나고 화면에 출력</h1>
<script>alert('body 시작지점에서 실행');</script>
<h2>javascript</h2>
<script>alert('h2 뒤에서 실행');</script>
<p>Lorem ipsum dolor sit amet.</p>
<script>alert('p 뒤에서 실행');</script>
</body>
</html>
스크립트 파일 분리
- HTML:구조, CSS:표현, JS:동작
- 인라인으로 사용하지 않는다. : 코드더러워짐 유지보수 어려움
<button
type="button"
onclick="document.body.style.background='#EA92FF';"
style="padding: 1rem; background: #220D44; color: #fff; border: none; border-radius: 5px;"
>
click
</button>
- css , script 내부로 분리 : 그래도 코드 더러움
<style>...</style>
<button typr="button" id="target"> GOOD click </button>
<script>
document.getElementById('target').onclick = function(){
document.body.style.background="#C6ABFF";
}
</script>
- css, script 외부파일로 모두 분리 : 깔끔!!
<link rel="stylesheet" type="text/css" href="css/marge-style.css">
<button typr="button" id="target"> GOOD click </button>
<script src="js/marge-app.js"></script>
- marge-app.js 코드
//marge-app.js
//문서 객체를 찾아 변수에 할당
var body = document.body;
var button = document.getElementById('target');
// 수행할 일(기능==function)을 참조하는 변수 선언
var btnClick = function(){
body.style.background="#C6ABFF";
}
// 기능이 참조된 변수를 실행
button.onclick = btnClick;
Learn later,,,,
- 바디요소 접근
document.body;
- 아이디 접근
document.getElementById('아이디명');
'Javascript' 카테고리의 다른 글
[자바스크립트] 변수 - variables (0) | 2017.03.01 |
---|