-
자바 스크립트프로그래밍 언어/규격 2011. 10. 3. 21:48the scripting language of the WWWJavaScript, aka Mocha, aka LiveScript, aka JScript, aka ECMAScripta object-oriented general-purpose programming languageJavaScript는 Netscape에서 Brendan Eich (Mozilla의 공동설립자로 현재는 CTO로 있습니다.)가 90년대 초에 웹페이지를 다이나믹하게 하기 위해서 만들었다.Netscape가 JavaScript를 Ecma International 에 제출하게 되고 1996년 11월에 ECMA-262를 위한 스펙을 제정하는 작업에 들어갔으며 1997년 7월에 첫번째 에디션1995년넷스케이프 네비게이터 2.0에서 1.01996년ECMA스크립트 1.1Netscape 3.0에서 1.1Internet Explorer 3.0 JScriptDOM Level 0document.images[].forms[]1997년1.2Netscape 4.0, IE 4document.layers[] // 넷스케이프 네비게이터 4.0.all[] // 인터넷 익스플로러 4.0DHTML(X)HTMLCSS자바스크립트비표준 확장 모드(quirks mode)DOCTYPEHTML 4.01998년W3C DOM Level 1e.g. var xpos = document.getElementById('myelement').style.leftSpiderMonkey는 Netscape에서 Brendan Eich가 C로 구현한 JavaScript의 첫번째 인터프리터였으며 지금도 파이어폭스와 Adobe의 제품들에서 사용되고 있다.1999년마이크로소프트는 CSS와 새 W3C DOM 표준을 잘 지원하는 익스플로러 5를 출시했다1999년 말ECMA-262 Edition 3; ES3정규표현식try/catch를 통한 예외처리현재의 대부분의 브라우저가 지원2000년DOM Level 2getElementById()이벤트 모델2002년 Tantek Çelik이 박스 모델 핵CSS로 표현하기 어려운 부분은 자바스크립트와 DOM을 사용하자.브라우저의 지원 문제로 원하는 CSS를 사용할 수 없다면 자바스크립트와 DOM이 대안이 될 수 있다.2005년 인터넷 익스플로러 7의 베타 버전2009년ECMA-262의 5번째 Edition; ES5ES 2015 (ES6)if (document.getElementById) {var element = document.getElementById('MyId');}else {alert('Your browser lacks the capabilities required to run this script!');}<head><script type="text/javascript">..</script>/*<SCRIPT LANGUAGE = "JavaScript">
<!--
..
// -->
</SCRIPT>
*/<script type="text/javascript" src="file.js"></script></head>
주석
/* .. */
// ..
문자열 상수
'..'
\'
JavaScript 언어는 입출력 개념이 없다
외부 세계와 통신하기위해 호스트 환경이 제공하는 메커니즘에 의존
변수 (Variables)
새로운 변수는 var 키워드로 선언
연산자 (Operators)
산술 연산자
+, -, *, /, %(나머지 연산자), ++, --; 할당연산자: =, += 와 -=
문자열 연산자
+(문자열 이어붙이기), +=
문자열에 어떤 수 (또는 다른 값)를 더하면 일단 모두 문자열로 바뀐다
빈 문자열에 어떤 값을 더하는 것은 해당 값을 문자열로 바꾸는 요령
비교
문자열과 수 양쪽 모두에서 동작
<, >, <= 와 >=
상동
이중 등호 (==) 연산자, !=
서로 다른 타입을 줄 경우 타입 강제 변환을 수행
삼중 등호 연산자 (===), !==
값을 비트로 취급하는 연산자
&& 와 || 연산자
삼중 연산자
?:
if ( typeof a == "undefined" ) ..
타입
숫자 (Number)
부울 (Boolean)
{true | false}
false, 0, 빈 문자열 (""), 수가 아님을 뜻하는 NaN, null, 와 undefined은 모두 false
Boolean()
if 문과 같이 부울값이 필요한 경우를 만나게되면 자동으로 변환
부울 연산자
! (논리적 부정)
객체 (Object)
이름-값 쌍(name-value pairs)의 모임
Python의 Dictionaries
Perl 과 Ruby의 Hashes
C 와 C++ 의 Hash tables
Java 의 HashMaps
PHP의 Associative arrays
"이름" 부분은 JavaScript 문자열
값은 객체를 포함하여 아무 JavaScript 값
문자열 (String)
함수 (Function)
배열 (Array)
날짜 (Date)
정규식 (RegExp)
수학(Math)
널 (Null)
Window
Document
Form
정의되지않음 (Undefined)
숫자 (Numbers)
이중정밀도 64비트 형식 IEEE 754 값
덧셈, 뺄셈, 계수 (또는 나머지) 연산을 포함하는 표준 산술 연산자
문자열을 정수로 변환
parseInt("123", 10)
NaN ("Not a Number" (수가 아님)을 줄인 약자)
isNaN()
Infinity
-Infinity
문자열 (Strings)
유니코드 문자들
빈 문자열에 어떤 값을 더하는 것은 해당 값을 문자열로 바꾸는 요령
.length
.charAt()
.replace()
.toUpperCase()
* 배열 (Arrays)
.length
> var a = new Array();
> a[0] = "dog";
> a[1] = "cat";
> a[2] = "hen";
> var a = ["dog", "cat", "hen"];
> a[100] = "fox";
for (var i = 0, len = a.length; i < len; i++) {
// a[i] 로 뭔가를 수행
}
for (var i = 0, item; item = a[i]; i++) {
// item 으로 뭔가를 수행
}
* 제어 구조
&& 와 || 연산자는 첫번째 식을 평가한 결과에 따라서 두번째 식을 평가를 실행하는 단축평가(short-circuit) 논리를 사용
Be mindful though when using && with code that has side effects
the operators && and || in Javascript, is that they do not return a boolean value (true or false), but the value of the last operand they evaluate
객체에 접근하기 전에 null 객체인지, 아닌지를 검사
var name = o && o.getName();
기본 값 설정
var name = otherName || "default";
삼중 연산자
?:
숫자나 문자열을 기반으로 다중 분기되는 문장
Prototype.js
JQuery
다트
다트2js
커피스크립트
레드햇 세이론
마이크로소프트 타입(Type)스크립트
- 모질라asm.js- 구글포터블 NaCl(PNaCl)c.f. 페퍼JS(pepper.js)네이티브클라이언트(NaCl)참조 사이트:
http://blog.outsider.ne.kr/643
https://developer.mozilla.org/en-US/docs/JavaScript/Guide
https://developer.mozilla.org/ko/docs/A_re-introduction_to_JavaScript