일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- binary search
- Dijkstra
- 스토어드 프로시저
- union find
- 이진탐색
- 다익스트라
- MYSQL
- Stored Procedure
- DP
- Hash
- Trie
- String
- Two Points
- 그래프
- SQL
- Brute Force
- two pointer
- Today
- Total
목록Programming Language/JavaScript (13)
codingfarm
1. 내부슬롯(internal slot)과 내부 메서드(internal method) js engine의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티(pseudo property)와 의사 메서드(pseudo method)다. ECMAScript 사양에 등장하는 이중 대괄호[[...]]로 감싼 이름들이 internal slot과 internal method 이다. 262.ecma-international.org/#sec-object-internal-methods-and-internal-slots internal slot과 internal method는 JS engine의 내부 로직이므로, javascript는 이들에 대해 직접적으로 접근하거나 호출할 방법을 제공하지 않..
전역 변수는 암묵적 결합을 허용한다. 암묵적 결합 : 전역변수를 코드 어디서든 참조하고 할당할 수 있는 성질 긴 생명주기 메모리 리소스를 차지하는 기간이 길어진다. 스코프 체인상에 종점에 존재 검색 속도가 느리다. 네임스페이스 오염 자바스크립트는 파일이 분리되어 있어도 하나의 전역 스코프를 공유한다. 다른 파일 내에 동일한 이름으로 명명된 전역 변수나 함수가 같은 global scope 상에 존재함에 따라 유지보수가 어려워진다. 전역변수의 사용을 억제하는 방법 1. 즉시 실행 함수 모든 코드를 즉시 실행 함수로 감싸면 모든 전역 변수는 즉시 실행 함수의 지역변수가 된다. 1 2 3 4 5 6 (function () { var foo = 10; // ... }()); console.log(foo); // ..
1. 지역변수의 생명 주기 생명주기(life cycle) : 변수의 메모리가 확보(allocate)된 시점부터 해제(release)되어 가용 메모리 풀(memory pool)에 반환되는 시점 변수는 자신이 선언된 scope 내에서 생성되고 소멸된다. 전역변수의 생명 주기 = 애플리케이션의 생명주기 지역변수의 생명 주기 = 함수의 생명 주기 호이스팅은 스코프를 단위로 작동한다. 1 2 3 4 5 6 7 8 9 kjjvar x = 'global'; function foo() { console.log(x); // undefined var x = 'local'; } foo(); console.log(x); // global cs 2. 전역 변수의 생명 주기 전역 코드는 코드가 로드되자마자 곧바로 해석되고 실행되..
1. 스코프란? 특정 변수들에 접근 가능한 '유효범위' JS engine이 식별자를 검색할 때 사용하는 규칙 1 2 3 4 5 6 7 8 9 var x = 'global'; function foo(){ var x = 'local'; console.log(x); // local } foo(); console.log(x); // global cs 스코프는 변수 및 함수의 접근 범위를 지칭하는 네임스페이스 라고도 볼 수 있다. scope를 통해 같은 이름을 가진 변수간의 충돌을 막을 수 있다. 2. 스코프의 종류 코드는 전역(global)과 지역(local)로 구분할 수 있다. 구분 설명 스코프 변수 전역 코드의 가장 바깥 영역 전역 스코프 전역 변수 지역 함수 몸체 내부 지역 스코프 지역 변수 3. 스코프 ..
var 키워로 선언된 변수는 같은 스코프 내에서 중복 선언이 허용된다. 1 2 3 4 5 6 function foo(){ var x = 1; var x = 2; console.log(x); } foo(); cs 하지만 let이나 const 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용하지 않는다. 123456function foo(){ let x = 1; let x = 2; console.log(x); // SyntaxError: Identifier 'x' has already been declared}foo();Colored by Color Scriptercs
함수 리터럴 자바스크립트의 함수는 객체 타입의 값이다. 숫자 값을 숫자 리터럴로 생성하고, 객체를 객체 리터럴로 생성하듯이, 함수도 함수 리터럴로 생성할 수 있다. 함수 리터럴은 function 키워드, 함수 이름, 매개 변수 목록, 함수 몸체로 구성된다. 1 2 3 4 5 6 7 // 변수에 함수 리터럴을 할당 var f = function add(x, y) { return x + y; }; console.log(f(1,2)); // 3 console.log(add(3,4)); // reference error cs 위 코드를 보면 함수 리터럴을 변수에 할당하고 있다. 리터럴은 사람이 이해할 수 잇는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기방식이다. 즉, 리터럴은 값을 생성하기 위한 표기법이..
자바스크립트가 제공하는 데이터 타입은 7가지이다. 숫자 문자열 불리언 null undefined 심벌 객체 타입 이 데이터 타입들은 크게 원시 타입(primitive type)과 객체 타입(object/reference type)으로 구분된다. 원시 타입과 객체 타입은 크게 세 가지 측면에서 다르다. 원시 타입(primitive type) 객체 타입(object/reference type) 변경 불가능한 값(immutable value) 변경 가능한 값(mutable value) 변수에 실제 값이 저장된다. 변수에 참조 값이 저장된다. 값에 의한 전달(pass by value) 참조에 의한 전달(pass by reference) 1. 원시 값(primitive type) 1.1 변경 불가능한 값(immu..
1. 객체란? JS는 객체 기반의 프로그래밍 언어이며, JS를 구성하는 거의 모든것이 객체이다. 원시값을 제외한 나머지 값(함수, 배열, 정규 표현식 등)은 모두 객체다. 원시타입 : 하나의 값만 나타낸다. 객체타입 : 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조다. 원시 타입의 값, 즉 원시값은 변경 불가능하지만, 객체는 변경 가능한 값(mutable value) 이다. 이는 추후 자세히 살펴볼것 객체는 0개 이상의 프로퍼티로 구성된 집합이다. 프로퍼티는 키와 값으로 구성된다. var person = { name: 'Lee', age: 20 }; name : 'Lee'와 age: 20 각각의 문장들은 프로퍼티로 분류된다. name과 age는 프로퍼티 키, 'Lee'와 20은 프로퍼티 값이..
비교 연산자 의미 사례 설명 == 동등 비교 x == y x와 y의 값이 같음 === 일치 비교 x === y x와 y의 값과 타입이 같음 != 부동등 비교 x != y x와 y의 값이 다름 !== 불일치 비교 x !== y x와 y의 값과 타입이 다름 타입은 개발자의 의도와 상관없이 JS에 의해 변환되기도 한다.(암묵적 타입 변환) 동등비교(==) 연산자는 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입 변환을 통해 타입을 일치시킨 후 같은 값인지 비교한다. //동등 비교 5 == 5;// true // 타입은 다르지만 암묵적 타입 변환을 통해 타입을 일치시키면 동등하다. 5 == '5';//true 암묵적 형변환은 결과를 예측하기 어렵게 만들기도 한다. 아래는 안티패턴이므로 가능하면 쓰지 말자 ..
데이터 타입은 값의 종류를 말한다. JS의 모든 값은 데이터타입을 갖는다. JS(ES6)는 7개의 데이터 타입을 제공한다. 원시타입(primitive type)과 객체 타입(object/reference type)으로 분류된다 구분 데이터 타입 설명 원시 타입 숫자(number) 타입 숫자, 정수와 실수 구분 없이 하나의 숫자 타입만 존재 문자열(string) 타입 문자열 불리언(boolean) 타입 논리적 참(true)과 거짓(false) undefined 타입 var 키워드로 선언된 변수에 암묵적으로 할당되는 값 null 타입 값이 없다는 것을 의도적으로 명시할 때 사용하는 값 심법(symbol) 타입 ES6에서 추가된 7번째 타입 객체 타입 객체, 함수, 배열 등 숫자 타입(Number Type) ..
값(value) 식(expression)이 평가(evaluate)되어 생성된 결과를 말한다. 평가 : 식을 해석해서 값을 생성하거나 참조하는것 변수 : 하나의 값을 저장하기 위해 확보된 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름 // 아래 변수에는 10 + 20이 평가되어 생성된 숫자 값 30이 할당된다. var sum = 10 + 20; 리터럴(literal) 사람이 이해할 수 있는 문자(아라비아 숫자, 알파벳, 한글 등...) 또는 약속된 기호를 사용해 값을 생성하는 표기법(notation) 값을 생성하기 위한 약속된 표기법이라 볼 수 있다. //숫자 리터럴 3 3 위 코드에서 3은 단순한 아라비아 숫자가 아닌 숫자 리터럴이다. 리터럴로 만들 수 있는 값의 종류(data typ..
식별자(Identifier) 변수나 함수, 클래스 등을 구별해서 식별할 수 있는 고유한 이름. 값이 아니라 메모리 주소를 기억한다. 즉, 메모리상에 존재하는 어떤 값을 식별할 수 있는 이름은 모두 식별자라고 부른다. 변수 선언(Variable Declaration) 변수를 생성하는것 var, let, const 키워드를 사용한다. var score; JS engine은 변수선언을 다음처럼 2단계에 걸쳐 수행한다. 선언 단계 : 변수 이름을 등록해서 JS engine에 변수의 존재를 알린다. 초기화 단계 : 값을 저장하기 위한 메모리 공간을 확보하고 암묵적으로 undefined를 할당해 초기화 한다. var 키워드를 통한 변수 선언은 선언 단계와 초기화 단계가 동시에 진행된다. 초기화 단계를 거치지 않으면..
자바스크립트는 웹페이지의 단순한 보조 기능을 처리하기 위한 제한적인 용도를 목적으로 1995년에 태어났다. 하지만 오늘날의 JS는 프런트엔드와 백엔드 영역의 프로그래밍 언어로 사용할 수 있는 범용 애플리케이션 개발 언어로 성장했다. 현재는 모든 브라우저의 표준 프로그래밍 언어로 자리 잡았다. 크로스 플랫폼을 위한 가장 중요한 언어로 주목받고 있다. 모바일 하이브리드 앱(PhoneGap, Ionic) 서버 사이드(Node.js) 데스크톱(Electron) 머신러닝(Tensorflow.js) 로보틱스(Johnny0Five) 자바스크립트 성장의 역사 초창기 자바스크립트는 웹페이지의 보조적인 기느을 수행하기 위한 한정적인 용도로 사용되었다. 이시기 대부분의 로직은 주로 웹서버에서 실행되었고, 브라우저는 서버로부..