전체 글

· JS
Object object는 key와 value의 집합체 Literals and Properties Object 만드는 방법 // object literal const chamy = { name: 'Chamy', // key: name, value: Chamy age: 27 // key: age, value: 27 } // object constructor const chamy = new Person('Chamy', 27); Computed Properties console.log(chamy.name); // Chamy console.log(chamy['name']); // Chamy
· JS
Class Template 역할을 함 붕어빵을 찍어내기 위한 빵틀 class는 ES6 이후 추가된 내용 Class Declaration class Person { // constructor(생성자) constructor(name, age) { this.name = name; this.age = age; } }Getter and Setter class User { constructor(firstname, lastname, age) { this.firstname = firstname; this.lastname = lastname; this.age = age; } get age() { return this._age; } set age(value) { if (value < 0) { throw Error(&#39..
8장 방어적 프로그래밍목차8.1 잘못된 입력으로부터 프로그램 보호8.2 어설션8.3 오류 처리 기법8.4 예외8.5 오류로 인한 손상을 막기 위한 방책8.6 디버깅 보조 도구8.7 얼마나 방어적으로 프로그래밍할 것인지 정하기8.8 방어적 프로그래밍에 대해서 한 번 더 고민하기8.1 잘못된 입력으로부터 프로그램 보호'쓰레기를 넣으면 쓰레기가 나온다'라는 말은 개발자에게 어울리지 않는다. '쓰레기를 넣으면 아무것도 나오지 않는다' 또는 '쓰레기를 넣으면 오류 메시지를 출력한다', '쓰레기를 허용하지 않는다'가 되도록 프로그램을 제작하라.쓰레기 입력을 처리하기 위한 방법으로는외부로부터 들어오는 모든 데이터의 값을 검사하라.루틴의 모든 입력 매개변수 값을 검사하라.잘못된 입력..
7장. 고급 루틴 목차 7.1 루틴을 작성하는 이유 7.2 루틴 수준의 설계 7.3 좋은 루틴 이름 7.4 루틴은 얼마나 길어야 할까? 7.5 루틴 매개변수 처리 7.6 함수를 사용할 때 특별히 고려해야 할 사항 7.7 매크로 루틴과 인라인 루틴 루틴 : 한 가지 목적을 위해서 호출할 수 있는 개별 메서드나 프로시저 7.1 루틴을 작성하는 이유 복잡성을 줄인다. 이해하기 쉬운 중간 단계의 추상화를 도입한다. 중복 코드를 피한다. 서브 클래싱을 지원한다. 코드의 실행 순서를 감춘다. 포인터 연산을 감춘다. 이식성을 높인다. 복잡한 불린 테스트를 단순화한다. 성능을 개선하기 쉽다. &#39;한 줄 또는 두 줄 정도로 된 짧은 코드를 루틴으로 작성하는 것이 효율적일까?&#39; 라는 질문에 이 책은 충분히 효..
· JS
Function Function Declare function name(param1, param2, ...) { body return } 하나의 함수는 한 가지 일만 하도록 작성해야 함 - 응집성과 관련있음 JS에서 function은 object로 간주 Parameters primitive parameter의 경우 값이 전달됨 object parameter의 경우 reference가 전달됨 Default Parameters (ES6 이후) parameter을 정의하지 않을 경우 undefined로 나옴 function showMessage(message, from) { console.log (`${message} by ${from}`); } showMessage('hi'); // hi by undefin..
· JS
Operator String Concatenation console.log(&#39;my&#39; + &#39; cat&#39;) // my cat console.log(&#39;1&#39; + 2) // 12 Numeric Operators console.log(1 + 1) // 2 console.log(1 - 1) // 0 console.log(1 / 1) // 1 console.log(1 * 1) // 1 console.log(5 % 2) // 1 console.log(2 ** 3) // 8**연산자는 exponentiation 연산임 Increment and Decrement Operators let a = 3; console.log(a++) // 3 console.log(a) // 4 conso..
6장. 클래스 다루기목차6.1 클래스의 토대: 추상 데이터형(ADT)6.2 좋은 클래스 인터페이스6.3 설계와 구현에 관한 이슈6.4 클래스를 작성하는 이유6.5 프로그래밍 언어에 특화된 이슈6.6 클래스를 넘어서: 패키지6.1 클래스의 토대: 추상 데이터형객체지향 프로그래밍을 이해하기 위해서는 ADT를 반드시 이해해야 한다. ADT를 이해하지 못하고서는 이름만 클래스인 클래스를 작성하게 될 것이다. 그런 클래스는 실제로는 연관성이 높지 않은 데이터와 루틴을 편의를 위해 보관하는 상자와 다를 게 없다. ADT를 사용하면 구현 세부 사항을 감출 수 있고, 변경이 전체에 영향을 미치지 않게 할 수 있다.실제 존재하는 객체를 다룰 수 있게 해주기 때문에 ADT는 개발을 하는데 상당한 편의를 가져다 줄 수 있다..
· JS
let vs var var 선언 하기도 전에 값을 할당하는 것이 가능 console.log(test); test = 6; console.log(test); var test;첫 console.log에서는 undefined, 두 번째 console.log에서 6을 출력 var hoisting : 선언한 위치에 상관 없이 가장 위에서 선언한 것으로 함 let 선언을 해야 값을 할당할 수 있음 test = 6; console.log(test); let test;test를 선언하지 않고 6을 넣었기 때문에 에러 발생 ES6에서 let이 표준이고 var는 사용하지 않는 것을 권장 const 한번 값을 할당하면 이후에 변경 불가 const의 장점 보안적인 장점 스레드로부터 안전성 확보 인간의 실수를 방지 데이터타입 ..
· JS
async와 defer script 삽입하기 안에 삽입 HTML 파싱 -> JS 패칭 -> JS 실행 -> HTML 파싱 HTML을 파싱하는 도중 를 만나면 파싱을 멈추고 JS 파일을 받아오고, 실행한 후 HTML 파싱을 재개함 끝에 삽입 HTML 파싱 -> JS 패칭 -> JS 실행 javascript 파일을 받기 전에 사용자가 화면을 볼 수 있는 장점이 있음 페이지가 javascript 의존도가 크다면 웹 페이지가 제대로 동작하지 않음 async HTML 파싱 + JS 패칭 -> JS 실행 -> 완료하지 못한 HTML 파싱 로 선언 HTML 파싱과 JS 패칭이 동시에 일어나고, JS 패칭이 완료되면 parsing을 멈추고 JS를 실행한다. 이후 완료하지 못한 HTML 파싱을 함 만약 javascrip..
· JS
자바스크립트의 역사 등장 동적 페이지를 만들기 위해 scripting 언어를 추가 Scheme script 언어를 기반으로 문법을 당시 유행하던 java스럽게 만듬 Netscape사에서 1994년 9월 첫 발표 처음 발표 이름은 live script이지만 java의 인기를 사용하기 위해 javascript로 바꿈 MS의 공격 javascript를 reverse engineering을 통해 1995년 Jscript 발표 Netscape의 대응 1996년 Netscape는 ECMA International에 표준화를 요청 1997년 ECMAScript1 등장 이후 2, 3, 4를 추가로 발표 Internet Explorer Internet Explorer의 대중화로 MS는 강력한 힘이 생김 ECMAScrip..
Chamy619
Chamy's Blog