JavaScript
-
[백준]1132 : 합(javascript)JavaScript 2022. 7. 25. 21:55
https://www.acmicpc.net/problem/1132 1132번: 합 N개의 수가 주어진다. 이 숫자는 모두 자연수이고, 알파벳 A부터 J가 자리수를 대신해서 쓰여 있다. 이 알파벳은 모두 한 자리를 의미한다. 그리고, 각 자리수는 정확하게 알파벳 하나이다. 0으로 www.acmicpc.net 문제 N개의 수가 주어진다. 이 숫자는 모두 자연수이고, 알파벳 A부터 J가 자리수를 대신해서 쓰여 있다. 이 알파벳은 모두 한 자리를 의미한다. 그리고, 각 자리수는 정확하게 알파벳 하나이다. 0으로 시작하는 수는 없다. 이때, 가능한 수의 합 중 최댓값을 구해보자. 입력 첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 각 수가 주어진다. 수의 길이는 최대..
-
[JavaScript] 프로퍼티 어트리뷰트JavaScript 2022. 7. 10. 21:53
내부 슬롯과 내부 메서드 내부 슬롯 : ECMAScript 사양에서 이용하는 의사 프로퍼티이다. 내부 메서드 : ECMAScript 사양에서 이용하는 의사 메서드이다. 이중 대괄호([[..]])로 감싼 이름이 내부 슬록과 내부 메서드이다. 내부 슬롯과, 내부 메서드는 자바스크립트 엔진의 내부 로직이므로 원칙적으로는 직접적으로 접근하거나 호출할 수 있는 방법을 제공하지 않는다. 예를 들어, 모든 객체는 [[Prototype]]이라는 내부 슬롯을 갖는다. [[Prototype]]의 내부 슬롯은 proto를 통해 간접적으로 접근할 수 있다. const o = {}; // 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 직접 접근할 수 없다. o.[[Prototype]] // -> Uncaught SyntaxE..
-
[JavaScript] let, const 키워드와 블록 레벨 스코프JavaScript 2022. 7. 9. 00:01
var 키워드로 선언한 변수의 문제점 ES5까지는 변수를 선언할 수 있는 유일한 방법이 var였습니다. var 키워드는 다음과 같은 문제점이 존재합니다. 변수 중복 선언 사용 var x = 1; var y = 1; // var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다. // 초기화문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작한다. var x = 100; // 초기화문이 없는 변수 선언문은 무시된다. var y; console.log(x); // 100 console.log(y); // 1 함수 레벨 스코프 var x = 1; if (true) { // x는 전역 변수다. 이미 선언된 전역 변수 x가 있으므로 x 변수는 중복 선언된다. // 이는..
-
[JavaScript] 전역 변수의 문제점JavaScript 2022. 7. 8. 00:01
전역 변수의 무분별한 사용은 상당히 위험합니다. 전역 변수를 반드시 사용해야 할 이유를 찾지 못한다면 지역 변수를 사용하는 것이 좋습니다. 전역 변수의 문제점과 전역 변수의 사용을 억제할 수 있는 방법을 살펴보겠습니다. 변수의 생명 주기 지역 변수의 생명 주기 생명 주기 : 변수는 생물처럼 생성되고 소멸된다. 그것을 생명 주기라 한다. 함수 내부에 선언된 지역 변수는 함수가 호출되면 생성하고 함수가 종료하면 소멸한다. function foo() { var x = 'local'; console.log(x); // local return x; } foo(); console.log(x); // ReferenceError: x is not defined 여기서 우리는 변수 호이스팅에 의해서 var x가 런타임 ..
-
[JavaScript] OOP & FPJavaScript 2022. 7. 5. 00:01
OOP OOP는 Object Oriented Programming의 약자로 객체지향 프로그래밍을 뜻합니다. OOP는 관련된 데이터끼리 묶어 class를 형성하고 그 안에서 object instance를 만듬으로써 프로그램을 디자인 해줍니다. OOP의 장점 OOP는 코드의 재사용률을 높이고 코드를 간결하게 함으로써 유지 보수가 쉽다는 장점이 있습니다. 데이터를 안전하게 보존시킬 수 있습니다.(캡슐화와 추상화 등) 대표적인 언어 C++, Java, Python, Javascript OOP의 특징 1) Encapsulation(캡슐화) 객체의 내부 로직을 감추고 외부에는 상대적으로 안정적인 부분만을 공개함으로써 데이터를 안전하게 보존하는 기법이다. 캡슐화는 외부에 영향을 주지 않고 객체 내부의 구현을 변경할 ..
-
[JavaScript] Jest로 기본적인 테스트 작성JavaScript 2022. 7. 4. 18:09
Jest는 페이스북에서 만든 React와 더불어 자바스크립트 개발자로부터 가장 좋은 반응을 보이는 테스팅 라이브러리이다. 출시 초기에는 FE에서 주로 쓰였지만 최근에는 BE에서도 기존의 자바스크립트 테스팅 라이브러리를 대체하고 있다. 테스트 코드란 무엇일까? 테스트 코드란 코드가 안정적이고 제대로 동작하는지 확인하기 위해 작성하는 코드이다. 이를 통해 특정 동작을 하는 코드가 예상과 동일하게 결과를 잘 내는지 품질 검사하는데 사용한다. 테스트 코드를 작성하면 뭐가 좋을까? 프로그램의 안정성을 보장할 수 있다. 프로그램이 변경(기능 확장 또는 리팩터링 등)이 되더라도 올바르게 작동하는지 확인할 수 있다. 개발 테스트 자동화 / 수동 테스트를 최소화 할 수 있다. 그럼 Jest를 통해 간단한 테스트를 실행해..
-
[JavaScript] 함수JavaScript 2022. 7. 1. 20:02
함수 수학의 함수는 다음과 같습니다. 프로그래밍 언어의 함수도 수학의 함수와 같은 개념입니다. f(x, y) = x+y를 자바스크립트의 함수로 표현하면 다음과 같습니다. // f(x, y) = x + y function add(x, y) { return x + y; } // f(2, 5) = 7 add(2, 5); // 7 프로그래밍에서 함수란? 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 매개변수 : 내부로 입력을 전달받는 변수 인수 : 입력 반환값 : 출력 함수는 함수 정의를 통해 생성합니다. // 함수 정의 function add(x, y) { return x + y; } 함수 실행은 함수 호출을 통해서 실행한다. // 함수 호출 var result = a..
-
[JavaScript] 원시 값과 객체의 비교JavaScript 2022. 6. 29. 16:47
원시 타입 vs 객체 타입 원사 타입의 값은 변경 불가능한 값이다. 이에 비해 객체(참조) 타입의 값은 변경 가능한 값 이다. 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장된다. 값에 의한 전달 : 원시 값을 갖는 변수를 다른 변수에 할당하면 원시 값이 복사되어 전달된다. 참조에 의한 전달 : 객체를 가리키는 변수를 다른 변수에 할당하면 참조 값이 복사되어 전달된다. 원시 값 1) 변경 불가능한 값 원시 타입의 값, 즉 원시 값은 변경 불가능한 값 이다.(원시 값은 읽기 전용이다.) 하지만 변경 불가능하다는 것은 변수가 아니라 값에 대한 진술이다. 즉, 아래의 예제로 o라는 변수 자체를 바꿀 순 없지만, o라는 변수 내에 할당하는 프로퍼티들은 바꿀 수 있다. // const 키..