Javascript
-
클래스Javascript 2020. 1. 3. 14:37
모조 클래스 자바스크립트에서는 다른 언어와는 달리 실제 클래스를 지원하지 않는다. 대신 모조 클래스(pseudo class)를 정의할 수 있다. 모조 클래스는 프로토타입 객체나 생성자 함수를 사용해 구현할 수 있다. 지금부터는 클래스라는 단어를 그대로 사용하겠다. 생성자 new 연산자를 이용해 아무 프로퍼티도 없는 새 객체를 하나 생성하고 new 연산자 뒤에 있는 함수를 호출한다. 그리고 this 키워드가 새로 생성된 객체를 가리키게 한다. 생성자는 새로운 객체를 초기화하고, 객체에 있는 프로퍼티들에게 초기값을 할당한다. 1 2 3 4 5 6 7 8 9 10 11 // 생성지를 정의한다. // ’this'와 연관되어 있는 객체를 초기화하는 방법을 주의해서 보라. function Rectangle(w, h..
-
함수Javascript 2020. 1. 2. 22:19
생략 가능한 전달인자(Optional Arguments) 함수 호출 시점에 전달인자를 생략할 수 있게 함수를 작성하는 것이 유용하다. 생략될 수 있는 전달인자는 적당한 기본값을 할당해 줄 수 있어야만 한다. 1 2 3 4 5 6 function copyPropertyNamesToArray(o, /* optional */ a) { if (!a) a= []; // a가 정의되지 않았거나 혹은 null이라면 빈 배열을 사용한다. for(var property in o) a.push(property); return a; } 가변 길이 전달인자 목록: 전달인자 객체 arguments는 Arguments 객체를 참조하는 특별한 프로퍼티다. 함수에 전달된 전달인자의 값을 전달인자 이름이 아니라 숫자를 사용해 접근하기..
-
객체와 배열Javascript 2020. 1. 2. 15:59
객체 객체 생성하기 객체는 복합 타입이다. 즉 객체는 여러 값들을 결합한 것으로서 값에 붙은 이름을 사용하여 원하는 값을 저장하고 읽어올 수 있다. 객체로 결합되는 값들은 숫자나 문자열 같은 기본 타입이거나, 다른 객체일 수도 있다. 객체를 생성하는 가장 쉬운 방법은 객체 리터럴({})을 사용하는 것이다. new 연산자를 사용하면 다른 방식으로 객체를 생성할 수 있다. new 연산자 뒤에는 객체의 프로퍼티들을 초기화하는 생성자 함수의 호출이 뒤따라야 한다. 다음은 new 연산자를 사용해 객체를 생성하는 몇 가지 예를 보여준다. 1 2 3 var a = new Array(); // 빈 배열을 생성한다. var d = new Date(); // 현재 날짜와 시간을 나타내는 객체를 생성한다. var r = n..
-
문장Javascript 2020. 1. 2. 15:24
function 1 2 3 function func_name (param1, param2, ...){ statements } 함수 이름은 문자열이나 표현식이 아닌 식별자이어야만 한다. 다른 문장 블록들과는 달리 중괄호가 반드시 필요하다. 일반적으로 함수 정의는 최상위 단계 코드에서 나타난다. 함수 정의를 다른 함수 정의 속에 중첩시킬 수 있다. 함수는 원칙적으로 문자이 아니다. 문장은 실행 시간에 실행되는 반면, 함수는 컴파일 단계에서 정의된다. parser가 함수 정의를 만나면 이 함수의 몸체를 이루는 문장들을 파싱하고 저장한다. 그리고 이 함수를 유지할 프로퍼티를 이 함수와 동일한 이름으로 정의한다. return return은 오직 함수 몸체 내부에서만 나타날 수 있다. return 문이 실행되는 시..
-
변수Javascript 2020. 1. 2. 14:26
변수 선언 변수 선언은 var 키워드를 사용한다. 하나의 var 키워드에 여러 개의 변수를 선언할 수 있다. 또한 변수의 선언과 초기화를 함께 할 수 있다. 1 var i = 0, j = 0, k = 0; 만일 변수의 초기화를 지정하지 않을 경우 변수 선언은 되지만, 값은 undefined이다. 변수 선언의 반복과 생략 var 구문으로 같은 이름의 변수를 여러 번 선언해도 무방하다. 만일 그 반복된 선언에 변수 초기화 구문이 함께 있을 경우 그 변수에 값을 할당하는 구문과 동일하게 작동한다. 그리고 선언되지 않은 변수는 암묵적으로 그 변수를 전역 변수로 선언된다. 그 변수가 함수 안에 쓰인다 하더라도 마찬가지이다. 정의되지 않은 변수 vs 할당되지 않은 변수 정의되지 않은 변수의 첫 번째 종류는 아직 선..
-
표현식과 연산자Javascript 2019. 12. 22. 21:06
기본 표현식 가장 간단한 형태의 표현식으로 상수, 리터럴 값, 특정 키워드 그리고 변수 참조를 말한다. 1 2 3 1.23 "hello" /pattern/ 객체와 배열의 초기화 표현식 새로 생성된 객체나 배열을 값으로 하는 표현식이다. 이들 초기화 표현식은 종종 '객체 리터럴'과 '배열 리터럴'이라고 한다. 일반 리터럴과는 달리, 프로퍼티와 원소의 값을 지정하는 수많은 하위 표현식을 포함할 수 있다. 배열 초기화 표현식은 대괄호 안에 담긴 쉼표로 구분된 표현식 리스트이다. 쉼표 사이의 값을 생략함으로써 원소의 값을 정의하지 않을 수 있다. 1 2 var matrix =[[1,2,3], [4,5,6], [7,8,9]]; var sparseArray = [1,,,,5]; 객체 초기화 표현식은 배열 초기화 표..
-
타입, 값, 변수Javascript 2019. 12. 20. 21:43
원시 타입 숫자, 텍스트, 불리언, null, undefined 객체 타입 원시 타입이 아닌 것들은 모두 객체이다. 객체 이름과 값을 갖는 property의 집합이다. 일반적인 경우 순서가 없는 값들의 집합이며, 각 값에는 이름이 지정되어 있다. 배열, 함수도 객체라고 부를 수 있다. 숫자 자바스크립트는 정수 값과 실수 값을 구분하지 않는다. 모든 숫자를 실수로 표현한다. 64비트 실수 형태로 표현한다. 하지만, 배열 인덱싱이나 비트 연산과 같은 특정한 연산은 32비트 정수로 수행한다. 정수 리터럴 프로그램 안에 있는 그래도 등장하는 숫자는 숫자 리터럴이라고 한다. 10진수 리터럴 외에도 16진수 값을 인식한다. 부동소수점 리터럴 실수는 정수 부분과 소수점, 소수점 이하 부분으로 표현한다. 지수 표기법으..
-
어휘 구조Javascript 2019. 12. 20. 12:42
unicode 자바스크립트는 unicode 문자 집합을 사용해 작성한다. 대소문자 구분 키워드, 변수, 함수 이름 등은 모두 항상 대소문자를 구분해 입력해야 한다. 그러나 HTML은 대소문자를 구별하지 않는다. 공백, 줄바꿈, 제어 문자 코드 내의 토큰(더 이상 나눌 수 없는 최소한의 단위)들 사이에 있는 공백들을 무시한다. 이처럼 프로그램 코드에 공백과 줄바꿈을 마음껏 사용할 수 있는 덕에, 가독성 좋운 코드를 짤 수 있다. 유니코드 이스케이프 시퀀스 일부 하드웨어와 소프트웨어로 특정 유니코드 글자들의 집합을 입력으로 받거나 화면에 출력할 수 없다. 이러한 문제를 해결하기 위해 유니코드 이스케이프 시퀀스인/u로 시작한다. 그 뒤에 16진수 숫자 4개가 온다. 예를 들어, "é"는 "/u00e9" 로 ..