
ECMASCRIPT ecma script는 specification의 명칭이다. 자바스크립트의 Specification Specification은 체계 메뉴얼(안내 책자)같은 것이고 사람들에게 검증 받은 것이라고 생각하면 된다. ~이런 내용을 적으면 브라우저에서는 ~이렇게 나와야하는 것을 정리 해놓은 것이다. 모든 브라우저는 이러한 설명서를 보고 자신들의 방식으로 만들었다고 생각 하면된다. 자바스크립트의 Specification 은 ECMAScript 이다. 이것을 굳이 따를 필요는 없지만 이 사양을 권장한다고 생각하면된다. 정리 javascript는 언어, ECMAScript는 Specification 이라고 생각하면 된다.

자바스크립트의 특징 웹 프론트엔드에서 쓰이는 유일한 언어이다. 빠르게 발전하고 있고, 여러 이벤트를 처리할 수 있게 만들어졌다. 앱을 interactive 하게 만들어 준다. 쓰이는곳이 많은 언어이다. 만약 백앤드 일을 한다면 다른언러를 쓸수 있다 하스켈 ,asp, java 를 쓸수있지만 프론트엔드단에서는 javascript만 쓸수 있다. 자바스크립트만 써서 나오는 나쁜점도 있을수도 있지만 웹프론트엔드에서는 자바스크립트만 사용한다. 예를들어 click 이벤트 처리와 같은 이벤트를 2개 이상 처리 할 수 있다. 데스크톱 애플리케이션에서도 사용하고 있는데, vscode , atom 과 같은 애플리케이션이 그 예 이다. 출처 : 노마드코더

함수란? 함수는 Function 이라는 객체의 인스턴스이다. 따라서 함수는 객체 Function이 가지고 있는 메소드들을 상속하고 있다. 함수 예제 function sum(arg1, arg2){ return arg1+arg2; } alert(sum.apply(null, [1,2])) //3 함수 sum은 Function 객체의 인스턴스다. 그렇기 때문에 Function 의 메소드 apply를 호출 할 수 있다. apply 메소드는 두개의 인자를 가질 수 있는데, 첫번째 인자는 함수(sum)가 실행될 컨텍스트이고, 두번짜 인자는 sum 함수의 파라미터에 대입할 값이다. 함수 메서드 o1 = {val1:1, val2:2, val3:3} o2 = {v1:10, v2:50, v3:100, v4:25} funct..

함수에는 arguments라는 변수에 담긴 숨겨진 유사 배열이 있다. 이 배열에는 함수를 호출할 때 입력한 인자가 담겨있다. function sum(){ var i, _sum = 0; for(i = 0; i < arguments.length; i++){ document.write(i+' : '+arguments[i]+' '); _sum += arguments[i]; } return _sum; } document.write('result : ' + sum(1,2,3,4)); //0 : 1 //1 : 2 //2 : 3 //3 : 4 //result : 10 자바스크립트는 매개변수가 없어도 에러가 나지 않는다. 자용자가 전달한 인자에 접근할수 있다. arguments.length 를 이용하여 인자의 개수를 알..

클로저 클로저(closure)는 내부함수가 외부함수의 맥락(context)에 접근할 수 있는 것을 가르킨다. 클로저는 자바스크립트를 이용한 고난이도의 테크닉을 구사하는데 필수적인 개념으로 활용된다. 내부함수 function outter(){ var title = 'coding everybody'; function inner(){ alert(title); //'coding everybody'; } inner(); } outter(); inner 함수에서 외부함수인 outter 함수의 title 변수에 접근할 수 있다. 클로저 내부함수는 외부함수의 지역변수에 접근 할 수 있는데 외부함수의 실행이 끝나서 외부함수가 소멸된 이후에도 내부함수가 외부함수의 변수에 접근 할 수 있다. 이러한 메커니즘을 클로저라고 한..

JavaScript에서는 함수도 객체다. 다시 말해서 일종의 값이다. 거의 모든 언어가 함수를 가지고 있다. JavaScript의 함수가 다른 언어의 함수와 다른 점은 함수가 값이 될 수 있다. 값으로서의 함수 매개변수로 함수 넘기기 function a(){} // a 라는 변수에 담긴 함수이다. a = { b:function(){ //함수는 값이기 때문에 a의 메서드b에 저장할 수 있다. } }; function cal(func, num){ //func 라는 매개변수로 함수를 전달할 수 있다. return func(num) } function increase(num){ return num+1 } function decrease(num){ return num-1 } alert(cal(increase, 1..

유효범위(Scope)는 변수의 수명을 의미한다. var vscope = 'global'; //전역변수 (애플리케이션 전역에서 접근이 가능하다.) function fscope(){ var vscope = 'local'; //지역변수 (함수 안에서만 접근할 수 있다.) alert(vscope); } function fscope2(){ alert(vscope); } fscope(); //local fscope2(); //global 함수 밖에서 변수를 선언하면 그 변수는 전역 변수가 된다. 전역변수는 사용하지 않는 것이좋다. 여러가지 이유로 그 값이 변경될 수 있기 때문이다. 변수를 선언할 때는 꼭 var 을 붙여야 한다. 지역변수의 사용 function a (){ var i = 0; // 루프를 돌때마다 i..

객체 : 중복되지 않는 인덱스를 문자로 가지고 있다. key와 value로 이루어져 있다. 객체에는 객체를 담을수도 있고, 함수도 담을 수 있다. 객체의 생성 var grades = {'egoing': 10, 'k8805': 6, 'sorialgi': 80}; key : 'egoing', 'k8805', sorialgi value : 10, 6, 80 객체의 생성2 var grades = {}; grades['egoing'] = 10; grades['k8805'] = 6; grades['sorialgi'] = 80; 비어있는 객체로 생성할 수 있고 대괄호('[]')로 객체를 접근할 수 있다. 객체의 생성 3 var grades = new Object(); grades['egoing'] = 10; grad..