본문 바로가기

javascript57

[자료구조 알고리즘] 자료구조 효율적인 탐색을 위한 정렬알고리즘#1 [정렬]- 자료구조 연산 : 삽입 - 삭제 - 탐색(정렬되어있는 상태로)- 탐색을 위한 정렬 : 탐색을 효율적으로 하기위해서 [버블정렬]1) 구현하기는 쉽지만 데이터 개수가 늘어남에 따라 연산 횟수도 늘어남2) N개의 데이터에서 순서대로 2개씩 잡고 오름/내림차순(비교와 이동 연산)에 따라 정렬함3) 공간복잡도 O(N) : 같은 배열에서 진행하기때문에4) 시간복잡도 - 워스트 케이스- 비교했을 때 모두 이동함- 어쨌든 비교를 데이터 개수만큼 해야하고 비교를 어떻게 하나 : (n-1)번 + (n-2)번 + ...... + 1- 등차수열의 합 : n(n-1)/2 -> O(N^2) static void sort(int[] arr){ int length = arr.length; for(int i=0; i 2017. 11. 11.
[자바스크립트] 필수 개념 - 어렴풋이 알면 모르는 것 [기본이자 필수개념 - js 프로그래밍 할 때 모르면 코드 못짜, 다른 사람 코드 못봐] 1) 브라우저 환경에서 자바스크립트는 샌드박스 환경에서 실행됨 : 파일 입출력 막기2) 함수를 통해 생성된 객체는 __proto__ (부모 객체의 프로토타입을 저장하는 프로퍼티가 존재함) => new String, new Object, new 사용자함수 등 => 사용자 함수를 선언하는 것 : new Function()=> 리터럴로 string을 생성하는 경우에는 x=> 부모 객체의 prototype 객체 프로퍼티에 추가를 하면 상속받는 객체들이 추가된 메서드나 변수를 사용할 수 있음 => 프로토타입 체인 : 해당 객체에 프로퍼티가 존재하지않을 경우 부모 객체로 올라감 => 즉시 반영 : 부모 역할을 하는 functi.. 2017. 7. 28.
[자바스크립트] use strict [use strict란]- 코드를 검사할 때 엄격하게 함 : 컴파일 단계에서 오류, 아래 엄격하게 제한되는 부분들이 있음 => 코딩 실수를 잡아내서 예외 발생시킴 - ECMAScript5 문법 - 선언 컨텍스트에 따라 적용범위가 다름 : 스크립트 전체 코드나 함수에 적용시킬 수 있음, 블록( { … } )문에는 적용X => 선언하는 방법은 : “use strict”; 로 선언 - strict mode를 지원하지않는 브라우저의 경우 : 값이 할당되지않은 변수(undefined)로 간주해서 컴파일 에러나지않음 [use strict를 사용함으로서](1) var나 let, const 변수를 선언하는 키워드없이 변수 선언이 안됨 : 암묵적인 전역변수 선언 (2) 같은 이름으로된 함수 파라미터 선언 불가 (3) e.. 2017. 7. 13.
[자바스크립트] ES6 - arrow function [arrow function]- function 표현에 비해 구문이 짧음- 익명함수 : 함수 호출을 위해 함수 표현식을 사용- 예시 let func1 = (val1, var2) => { return va1 + var2; } let func2 = (var1,var2) => var1 + var2; - 블록을 지정할 때에는 return을 명시, 블록 지정하지않을 때 암묵적 return [arrow function 특징]1) 파라미터가 없을 때는 () 가 필수, 1개만 있을 때는 생략 가능let func = var1 => { return va1; } 2) 객체 반환 시 소괄호 사용해서 짧게 작성해도됨() => ({ a: 1 }); 3) argements 객체 바인딩X : 함수 호출 시 인수를 담은 유사 배열 객.. 2017. 6. 21.
[자바스크립트] JSON 객체 [JSON이란]- Javascript Object Notion의 줄임말- 자바스크립트 Object 형태의 경량의 데이터 포멧 :자바스크립트로 파생되었지만 독립형 데이터 포멧- 서로 다른 시스템 간 객체를 교환할 수 있음 : 자바스크립트 - 서버 간 통신할 때 유용(AJAX)- 사람, 기계 모두 이해하기 쉽고 용량이 작음- key - value 형식 : { key: value } : 문자열은 ""로 묶어야하며, 배열은 [ ]{ "name": "jinbro", "age": 26, "major": "digital media" } [자바스크립트 JSON 객체]- JSON 객체 : JSON을 다루는 메서드 포함- IE6 이하 버젼부터는 JSON 객체를 지원하지않음 : 따로 코드를 삽입해야함- 메서드1) JSON... 2017. 6. 17.
[자바스크립트] ECMA6 - let, const 블록 레벨 스코프 [자바스크립트 스코프]- 자바스크립트의 변수 범위는 블록( { …. } )이 아닌 function level scope- 함수 바깥에 정의된 변수와 함수는 전역 객체(window)의 멤버- 함수 내부에서 var 키워드로 변수를 선언하지않으면 전역객체의 멤버로 정의됨- 전역변수의 남발 [블록 레벨 스코프]- ES6부터 추가된 문법을 통해 블록 레벨 스코프 변수를 선언할 수 있음 - 기존 함수 레벨 스코프를 가지는 var로 변수를 선언하면 전역변수 or 함수의 변수 [let]1) 블록 레벨 스코프 변수 선언 키워드var test = function(a, b, start){ if(start){ let result = a + b; } return result; } test(1, 2, true); // undef.. 2017. 6. 16.
[자바스크립트 자료구조] List [List]- 목록, 순서가 있는 일련의 집합체(몇번째 항목)- 리스트에 저장된 각 데이터 항목을 요소라 함, 프로그램의 가용메모리가 리스트에 저장할 수 있는 최대 요소 수- Array의 index 버림(빠른 검색X), 요소간의 순서가 중요, 빈 엘리먼트 허용X : 리스트 탐색을 통해 요소 추출- 빈틈없는 데이터 적재의 장점을 취한 자료구조 : Array는 index 자리에 value가 삭제되면 뻥 떠버림 - 메우기위한 로직 필요=> Array 단점 보완 : 크기 고정X(새로 빈 배열을 만들고 깊은 복사를 해서 만드는 방식이 아님) [List ADT]- ADT란? Abstract Data Type을 말함, 리스트 자료구조가 어떤 구현부를 가져야하는가를 인터페이스 제시하는 것- 예시 : 전기밥솥 ADT :.. 2017. 6. 13.
[프로그래밍 기초] 자바스크립트 런타임, 코어와 쓰레드 [런타임이란]- 프로그래밍 언어가 구동되고 있는 환경- 자바스크립트 런타임1) 웹브라우저 : 웹 자원에 접근하기위한 클라이언트 사이드 계층 구조(런타임)2) node.js : 자바스크립트 런타임, V8엔진 등장(속도 향상, 크롬 브라우저의 V8 기반 nodejs를 특정 모듈을 사용해 웹서버 구축) - 이벤트 기반 비동기 I/O 처리 서버=> 클라이언트 요청을 이벤트로 처리 : 이벤트 큐 -> 이벤트 루프 -> 응답=> 이벤트 루프(싱글쓰레드)가 큐에 담긴 이벤트 처리 후 응답, 긴 I/O 경우 별도 쓰레드풀(worker)에서 처리 후 큐에 리턴, 루프 처리 - 런타임 구성 : 런타임 라이브러리 / 런타임 환경으로 구성됨1) 런타임 라이브러리 : 프로그램(js)을 관리하기위한 특정 컴파일러, 가상머신이 사.. 2017. 6. 12.
[자바스크립트] 비동기처리 Promise [자바스크립트 단일스레드 비동기처리]- 제목 그대로다- 자세히 알아보기 : http://jinbroing.tistory.com/98=> 비동기함수와 콜백함수 처리 구별 1234567try{ setTimeout(function(){ throw 'Error!'; }, 1000);} catch(e){ console.log(e);}cs- 위의 코드는 에러를 캐치할까 못할까? : 하지 못함, setTimeout과 파라미터로 전달되는 콜백함수 처리를 구별할 줄 알아야함- 위와 같은 문제를 해결하기위해 Promise가 제안됨 [Promise란]- 비동기처리(콜백함수) 계산을 위해 사용됨 : ES6 정식 채택- window(전역객체)의 멤버 : Promise [Promise state]- 앞서 살펴본 에러처리는 set.. 2017. 5. 30.
[자바스크립트] 객체지향 프로그래밍하기 [프로토타입 기반 객체지향]- 자바스크립트는 클래스가 존재하지않음- 객체지향 프로그래밍을 할 수 있음 : 객체, 인스턴스 변수/메서드, 정보은닉(클로저), 상속(prototype, __proto__)- 자바스크립트 객체지향 핵심 : 프로토타입 객체(체인)- 해당 포스팅을 통해 단계별로 상속, 정보은닉 하는 방법을 알아볼 것 : 자바스크립트는 어떻게 구현하나 [자바스크립트로 객체지향 프로그래밍하기]1) 기본적인 인스턴스 생성 구조12345function Person(name){ this.name = name;} var jinbro = new Person("jinbro");cs- Person 함수 : 클래스 역할이자 생성자(객체 생성 시 처음 호출 : 인스턴스 변수 값 및 메서드 설정을 위해) 역할- new.. 2017. 5. 26.