분류 전체보기

·Language/Java
[Java] Lamda Expressions(람다식) 람다식은 Anonymous Founction(익명 함수)를 생성하기 위한 식으로 함수형 인터페이스를 구현하기 위해 자바 8에서 도입한 표현식이다. 장점 자바 코드가 간결해진다. 컬렉션의 요소를 필터링하거나 매핑해서 원하는 결과를 쉽게 집계할 수 있다. 람다식의 형태 람다식의 형태는 매개변수를 가진 코드블록이지만 런타임 시에는 익명 구현 객체를 생성한다. 람다식 -> 매개변수를 가진 코드 블록 -> 익명 구현 객체 public interface func { U apply(T data); } 익명 클래스 문법 new 인터페이스 이름() { 반환타입 메서드명 (인자) { 실행문 } }; 람다식과 익명 클래스의 차이점 람다식과 익명클래스의 차이점은 람다식에서..
·Language/Java
[Java] Generic(제네릭) Generic(제네릭)은 class와 interface, method를 정의할 때 Type(타입)을 Parameter(파라미터)로 사용할 수 있도록 하는 역할을 한다. 그래서 타입 파라미터는 코드를 작성할 때 구체적일 타입으로 대체되어 다양한 코드를 생성할 수 있도록 한다. 장점 컴파일 시 정확한 타입 체크를 할 수 있다. 컴파일러에서 코드에서 잘못 사용한 타입 때문에 에러가 발생하는 상황을 예방할 수 있다. Casting(형변환)을 사용하지 않는다. Casting을 사용하면 불필요한 타입 변환을 하므로 성능에 영향을 줄 수 있다. List list = new ArrayList(); list.add("work"); String data = (String) list.ge..
symbol 변경 불가능한 원시타입의 값이다. 주로 변수명이 충돌 위험이 없는 유일한 객체의 Property Key를 만들기 위해 사용되며 Symbol 함수를 호출하여 생성한다. //symbol key는 이름 충돌 위험이 없는 유일한 객체의 property key 이다. let key = Symbol('key'); console.log(key); console.log(typeof key); //symbol var obj = {}; obj[key] = 'value'; console.log(obj[key]); //value [결과] Symbol(key) symbol value
템플릿 리터럴(Template Literals) ES6는 템플릿 리터럴(Template Literals)은 일반 문자열과 비슷해보이지만 ' 또는 " 같은 통상적인 따옴표 문자 대신 백틱(Backtick) (`) 문자를 사용한다. const template = `템플릿 리터럴은 '작은따옴표(single quotes)'과 "큰따옴표(double quotes)"를 혼용할 수 있다.`; console.log(template); 방법1 일반적인 문자열에서 줄바꿈은 허용되지 않고 공백(white-spce)를 표현하기 위해 백슬래시(\)로 시작하는 이스케이프 시퀀스(Escape Sequence)를 사용해야한다. 템플릿 리터럴은 일반적인 문자열과 다르게 여러 줄에 걸쳐 문자열을 작성할 수 있으며 템플릿 리터럴 내의 모..
[ES6] Class(클래스) 클래스는 프로토타입 기반 객체 지향 패턴을 더 쉽게 사용할 수 있게 할 수 있는 대체제로 클래스 패턴 생성을 더 쉽고 간단하게 생성할 수 있다. //클래스 선언 class Person { //constructor 생성자 constructor(name) { this._name = name; } Hello() { console.log('Hello! ' + this._name); } } const me = new Person("Paik"); const friends = new Person("Lee"); me.Hello(); friends.Hello(); 인스턴스 생성 new 연산자를 이용하여 클래스 인스턴트를 생성한다. class Foo {} const foo = new Foo(..
[ES6]-Arrows Arrows 함수는 function 키워드 대신 화살표('=>') 를 사용하여 함수를 선언하는 축약형 함수이다. Arrows는 표현식 본문(Expression Bodies)와 상태 블럭 본문(Statement block bodies)를 지원한다. 콜백 함수에서 사용하면 간결하게 표현이 가능. //매개변수 지정 방법 () => {...} // 매개변수가 없는 경우 x => {...} // 매개변수가 한 개인 경우, 소괄호를 생략할 수 있다. (x,y) => {...} //매개변수가 여러 개의 경우, 소괄호를 생략할 수 없다. //함수 몸체의 지정 방법 x => { return x * x} //signle line block x => x * x //함수의 몸체가 한줄구문이라면 중괄호를..
Scope 연산자 let, const 기존 ES6 변수들을 선언할 수 있는 방법은 var 키워드이다. var키워드를 사용할 때 주의를 기울이지 않으면 심각한 문제를 일으킨다. [문제점] Function-level scope(함수레벨 스코프) 함수의 코드 블록만을 스코프로 인정한다. 그러므로 전역함수 외부에서 생성한 변수는 모두 전역 변수이다. 이는 전역변수를 남발할 가능성이 크다. for문 변수 선언문에서 선언한 변수를 블록 외부에서 참조할 수 있다. var 키워드 생량 허용 : 암묵적 전역 변수를 만들어 낼 가능성이 크다. 변수 중복 선언 허용 : 의도하지 않은 변수값의 변경이 일어날 가능성이 크다. 변수 호이스팅 : 변수를 선언하기 이전에 참조할 수 있는 것. 대부분의 문제는 전역변수로 인해 발생한다..
호이스팅 (Hoisting) 자바스크립트의 인터프리터가 함수선언과 변수선언의 선언들이 속해 있는 스코프의 최상단으로 끌어올릴수 있는 방법에 대한 일종의 비유이다. 이로인해 자바에서 작성했다면 분명히 잘못된 것을 컴파일하면 실패하는 것들이 자바스크립트에서는 전혀 문제가 되지 않은 것을 볼 수 있다. travel = 'No Plan'; var traval; console.log(traval); //undefined function travel() { console.log('Traveling'); } travel(); //TypeError: travel is not a function function workout() { goToGym(); var goToGym = function..
객체 프로퍼티와 프로퍼티 속성 자바스크립트에서 객체는 논리적인 프로퍼티의 집합이며 속성(Attributes)은 프로퍼티의 상태를 정의하고 설명하는데 사용한다. 프로퍼티의에는 데이터 프로퍼티(Data Property), 접근 프로퍼티(Access Property)가 있다. 데이터 프로퍼티(Data Property) value : 자바스크립트의 모든 자료형 writeable : 데이터 프로퍼티의 변경가능 여부 정의 enumerable : for-in 구분을 이용해 열거 가능 여부 정의 configurable : 제거 가능 여부, 접근 프로퍼티 변경 여부, 쓰기 불가 여부, enumerable 속성의 수정 가능여부 정의 접근 프로퍼티(Access Property) get 접근자(get accessor) : F..
Observer Pattern(관찰자 패턴) Observer Pattern은 Observer 라는 Child List를 가지고 있는 주체를 필요로 하는데, 주체는 자신의 메서드 중 하나를 호출해 Observer에게 상태 변경을 알린다. 즉, 주체(Subject)는 이벤트를 발생시키는 역할을 하고, 관찰자(Observer)는 이벤트 수신하는 역할을 한다. 이 패턴은은 이벤트 처리를 기반으로 시스템을 구현할 때 필수고, MVC패턴의 중요한 부분이기도 하다. 대부분의 UI라이브러리는 Observer Pattern을 사용한다. 그리고 런타임 중 객체 사이에 일 대 다(1:N) 의존성을 등록할 수 있다. 장점 응용 프로그램 사이의 결합도를 낮출 수 있다. 효율적으로 이벤트를 배포하는데 도움이 된다. UML 다이어..
조슈아。
'분류 전체보기' 카테고리의 글 목록 (6 Page)