전체 글
-
[모던 자바스크립트 딥다이브 / 11 원시 값과 객체의 비교]JavaScript/모던 자바스크립트 deepdive 2024. 3. 5. 19:55
원시 타입과 객체 타입은 크게 세 가지 측면에서 다르다. 원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다. 이에 비해 객체(참조) 타입의 값, 즉 객체는 변강 가능한 값이다. 원시 값을 변수에 할당하면 변수(확보된 메모리 공간)에는 실제 값이 저장된다. 이에 비해 객체를 변수에 할당하면 변수(확보된 메모리 공간)에는 참조 값이 저장된다. 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다. 이를 값에 의한 전달이라 한다. 이에 비해 객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달된다. 이를 참조에 의한 전달이라 한다. 11.1 원시 값 11.1.1 변경 불가능한 값 원시 타입의 값, 즉 원시 값은 변경 불가능한 값이다. 변수 → 하나의 값을 ..
-
[모던 자바스크립트 딥다이브 / 10 객체 리터럴]JavaScript/모던 자바스크립트 deepdive 2024. 3. 5. 19:53
10.1 객체란? 자바스크립트는 객체 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 “모든 것”이 객체다. 원시값을 제외한 나머지 값(함수, 배열, 정규표현식 등)은 모두 객체다. 원시타입은 단 하나의 값만 나타내지만 객체 타입은 다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조이다. 원시값 : 변경 불가능한 값 객체 : 변경 가능한 값 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 함수는 일급 객체이므로 값으로 취급할 수 있다. 따라서 함수도 프로퍼티 값으로 사용할 수 있다. 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라 부른다. 객체는 프로퍼티와 메서드로 구성된 집합체다. 프로퍼티 : 객체의 상태를 나타내는 값(..
-
[모던 자바스크립트 딥 다이브 / 9 타입 변환과 단축 평가]JavaScript/모던 자바스크립트 deepdive 2024. 3. 5. 19:51
9.1 타입변환 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입변환 또는 타입 캐스팅이라 한다. var x = 10; //명시적 타입변환 //숫자를 문자열로 타입캐스팅한다. var str = x.toString(); console.log(typeof str, str); // string 10 //x 변수의 값이 변경된 것은 아니다. console.log(typeof x, x); // number 10 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 한다. 이를 암묵적 타입 변환 또는 타입 강제 변환이라한다. var x = 10; //암묵적 타입 변환 //문자열 연결 연산자는 숫자 타입 x의 값을 바탕으로 새로운 문자열을 생성한다. ..
-
[모던 자바스크립트 딥다이브 / 8 블록문]JavaScript/모던 자바스크립트 deepdive 2024. 3. 5. 19:49
8.1 블록문 블록문은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다. 자바스크립트는 블록문을 하나의 실행단위로 취급한다. 블록문은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문에 블록문의 끝에는 세미콜론을 붙이지 않는다. 8.2 조건문 8.2.1 if…else문 if 문의 조건식은 불리언 값으로 평가되어야 한다. 만약 if 문의 조건식이 불리언 값이 아닌 값으로 평가되면 자바스크립트 엔진에 의해 암묵적으로 불리언값으로 강제 변환되어 실행할 코드 블록을 결정한다. num >0 ? ‘양수’ : ‘음수’ 는 표현식이다. 즉, 삼항 조건 연산자는 값으로 평가되는 표현식을 만든다. 따라서 삼항 조건 연산자 표현식은 값처럼 사용할 수 있기 때문에 변수에 할당할 수 있다...
-
[모던 자바스크립트 딥다이브/ 7 연산자]JavaScript/모던 자바스크립트 deepdive 2024. 3. 5. 19:48
7 연산자 7.1. 산술연산자 산순연산이 불가능한 경우 NaN을 반환한다. 숫자타입이 아닌 피연산자에 + 단항 연산자를 사용하면 피연산자를 숫자타입으로 변환하여 반환한다 ‘+’ 연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작한다. ‘==’동등비교 연산자는 좌항과 우항의 피연산자를 비교할 때 먼저 암묵적 타입변환을 통해 타입을 일치시킨후 같은 값인지 비교한다. 때분에 동등비교연산자 대신 일치비교’===’ 연산자를 사용하는 것이 좋다. 일치비교 연ㅅ나자는 좌항과 우항의 피연산자가 타입도 같고 값도 같은 경우에 한하여 true를 반환한다. NaN은 자신과 일치하지 않는 유일한 값이다. 따라서 숫자가 NaN인지 조사하려면 빌트인함수 isNaN을 사용한다. // isNaN 함수는 지정한..
-
[모던 자바스크립트 딥다이브 / 12 함수]JavaScript/모던 자바스크립트 deepdive 2024. 3. 5. 19:47
12 함수 12.1 함수란? 프로그래밍 언어의 함수는 일련의 과정을 문으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 이때 함수 내부로 입력을 전달받는 변수를 매개변수, 입력을 인수, 출력을 반환값이라 한다. 또한 함수는 값이며 여러개 존재할 수 있으므로 특정함수를 구별하기 위해 식별자인 함수 이름을 사용할 수 있다. // 함수 정의 function add(x, y){ return x + y; } // 함수 호출 var result = add(2, 5); 12.2 함수를 사용하는 이유 함수는 몇 번이든 호출할 수 있으므로 코드의 재사용이라는 측면에서 매우 유용하다. 코드의 중복을 억제하고 재사용성을 높이는 함수는 유지보수의 편의성을 높이고 실수를 줄여 코드의 신뢰성을 높이는 효과가..
-
[릿코드 / js] 다시풀기 287. Find the Duplicate Number코딩테스트 2023. 9. 19. 14:41
var findDuplicate = function(nums) { let fast = 0; let slow = 0; while(true) { slow = nums[slow]; fast = nums[fast]; fast = nums[fast]; if (slow === fast) break; } slow = 0; while (true) { slow = nums[slow]; fast = nums[fast]; if (slow === fast) return slow } }; 토끼와 거북이 알고리즘을 이용해 풀 수 있다.
-
[릿코드 / js] 1337. The K Weakest Rows in a Matrix코딩테스트 2023. 9. 18. 13:05
var kWeakestRows = function(mat, k) { let row = mat.length; let col = mat[0].length; let soldeiers = new Array(row); let output = new Array(k); for(let i = 0; i a[1] - b[1]); for (let i = 0; i < k; i++) { output[i] = soldeiers[i][0]; } ret..