전체 글 109

[javaScript/공부] 깊은 복사, 얕은 복사

복사 알아보기         복사? 객체는 값 자체가 아니라 값의 주소를 통해 데이터를 전달한다.그래서 객체를 단순히 복사하면, 복사한 객체와 원본 객체가 같은 메모리 주소를 참조하게 되어,하나를 변경하면 두 객체가 모두 변경되는 오류가 발생한다.이를 방지하기 위해 깊은 복사(deep copy)와 얕은 복사(shallow copy)라는 개념이 존재한다.얕은 복사는 대상의 1단계 속성만 복사하는 반면,깊은 복사는 대상을 완전히 복사하여 중첩된 객체나 배열까지도 새로운 메모리 주소를 갖도록 복사한다        얕은 복사(shallow copy) • 1단계 속성만 복사const shallowCopy = function(target) { let result = {}; for (let prop in targ..

WEB/javaScript 2025.01.07

[코딩테스트/javaScript] 숫자 문자열과 영단어 ⭐️⭐️

처음에는 그저 반복문을 돌려 문자가 매칭되면, .replace 메소드를 사용해 대체시켜주려고 생각했다.그리고 하나가 아닐 수도 있으니 if문과 while을 동시에 써 모든 글자가 대체될 때 멈추는? 그런데 다른 방법이 있을 거 같았음. 그래서 한번에 조건을 만족시키는 모든 대상에 적용시키는 함수가 없나 찾아봄그리고 정규식이라는 게 있다는 걸 알게됨! 정규식 RegExpconst regex = new RegExp(pattern, flag);이런식으로 사용하는데, pattern :  찾고자 하는 패턴 (여기서는 영어로된 단어들이 해당됨)flag : 다음 세가지로 구성됨• g(global) : 문자열 내 모든 매칭을 검색• i (ignore case) : 대소문자를 무시• m (multiline) : 여러 줄..

[javaScript/공부] 데이터 타입(Data Type)

데이터타입(Data Type) 알아보기         원시 타입 01 숫자형(Number)정수와 소수를 모두 포함2^53-1보다 큰 수는 Bigint  02 문자형(String)"string"'string'`string`다 같지만 백틱(`)의 경우• 줄바꿈이 가능하다• ${}로 다른 변수 사용 가능  03 불리언(Boolean)조건을 표현하는 자료구조truefalse  04 Null널.. 이라고 읽는다..값이 없는 것 (빈 공간)undefined (공간 자체가 없음)          참조 타입 별도의 공간에 원본 데이터를 저장,변수에 데이터의 주소를 저장.주소가 메인이기 때문에let a = [1];let b = [1];a === b //false 같은 값이 들어있는 배열이어도 다른 배열, 혹은 객체이다...

WEB/javaScript 2025.01.06

[javaScript/공부] 변수 알아보기

변수 알아보기         변수(Variable 데이터를 저장하고 참조할 수 있는 이름과 주소를 가진 저장소변수 선언 (이 저장소 쓸게) //var a;할당 (이 저장소에 이거 담을게) //a = 1;  01 var**최대한 사용 지양하기**함수 스코프를 가지며, 재선언과 재할당이 가능하다.var x = 10;var x = 20; //재선언 가능x = 30; //재할당 가능TDZ (temporarily dead zone)let x; 이렇게 호이스팅 안되고 에러 뜸but var x; 는 그대로 undefined 로 뜸  02 let재선언 불가능재할당 가능let a = 0;let a = 2; //재선언 불가능a = 1; //재할당 가능  03 const재선언 불가능재할당 불가능const a = 0;con..

WEB/javaScript 2025.01.06

[코딩테스트/javaScript]이상한 문자 만들기

function solution(s) { let answer = []; for (let i=0; i오류가 떠서 콘솔창으로 확인해봤더니, 빈공간인 경우 .toUpperCase()가 적용이 안되고 에러가 뜬다..반복문으로 어떻게든 해보려고 몇시간을 끙끙대다 결국 포기... 그리고 알게된 사실...split('')은 글자별로, .split(' ')은 단어별로 나눠준다. (따옴표 안 띄어쓰기) 그리고 .map(요소) / .map(요소,인덱스)로 변수를 정해 함수를 만들면 됨.map은 배열 안 요소를 하나씩 가져와 순회하며 함수를 적용하는 메소드다. 다시 쓰면서 분명 맞는 거 같은데 자꾸 틀리길래... 결국 챗지피티한테 물어봤는데나는 삼항 연산자는 return을 내포하고있다고 착각했다. 그래서 ..

[javaScript/공부] 화살표 함수, this, 호이스팅을 알아보자

화살표 함수와  this, 그리고 호이스팅 알아보기         화살표 함수? function () {}() => {}위가 전통적 함수 표기법, 아래가 화살표 함수다.화살표 함수가 훨씬 간결해서 저것만 쓰면 안되나? 싶어서 찾아보니,동작 방식에서 차이가 있었다.  01 this 바인딩의 차이this 란, 함수나 메서드 내에서 객체를 참조하는 키워드다. (다음 목차에서 더 설명)function에서는 this가 동적으로 결정된다. 즉 아래와 같이 사용이 가능하다.const obj = { value: 10, example: function () { console.log(this.value); //this는 obj를 가리킴 -> 출력: 10 },};하지만 화살표 함수에서는 상위 컨텍스트의 this를 상..

WEB/javaScript 2025.01.02

[코딩테스트/javaScript] 3진법 뒤집기

어떻게든 패턴 찾고싶어서 공책 펴놓고 이것저것 다 써봤다.............그렇게 찾은 패턴십진수에서 3으로 계속 나누면서 생기는 나머지들 + 마지막으로 나눠지는 수를 이으면 삼진법 뒤집은 모양임for (let i=0; n>=3; i++) { arr.push(n%3) n = Math.floor(n /= 3); } arr.push(n);우선 삼진수로는 만들었다. 그런데 다시 십진수로 만드는 게 또 난관이다.우선 내가 세운 식은,arr[(arr.length-1)-j] * (3 ** j)인데,//예시인 125의 3진수를 뒤집으면 22111이다.let index = arr.length-1; //이라고 가정했을 때//자릿수 * 3의 x제곱arr[index-0] * (3**0..