728x90
불변성불변성⸰ 한 번 생성 후 변하지 않는 것⸰ 예상 가능하고, 신뢰할 수 있는 코드를 지향하기 위하여 사용해야 함 Immutable type⸰ 원시 타입(Boolean,String,Number,Null,Undefined,Symbol) ⸰ 메모리 영역 안에서 불변하며, 새로운 값이 재할당let name = 'foo';name = 'bar';name 은 새로운 값이 재할당 됨 Mutable type⸰ 객체 타입(Object,Array,Map등)⸰ 변할 수 있는 값이며, 직접적으로 변경 가능let x = ['foo'];x.push('bar');console.log(x); // ['foo', 'bar']x.push('bar') 라는 코드를 보지 못한다면, x = ['foo'] 라고 생각하여 잘못 코드를 작성할..
JSON.stringify( ) / JSON.parse( )JSON.stringify( )⸰ JavaScript 객체를 JSON 형식의 문자열로 변환⸰ JavaScript 객체를 서버로 전송하거나, 로컬 저장소에 저장하기 위해 필요한 작업 > 데이터를 일관된 형식으로 전송 가능 형식JSON.stringify(value, replacer, space)⸰value(필수) : JSON 문자열로 변환할 값, 배열 / 객체 / 숫자 / 문자 등 가능⸰replacer(선택) : null이거나 없으면, 객체의 모든 속성이 JSON 문자열 결과에 포함, 함수 / 배열 가능⸰space(선택) : 출력에 공백을 삽입, string / number 가능 replacer가 함수인 경우 ⸰ 문자열로 바뀌는 프로세스의 작동을 변..
전역변수도 매개변수로 하는 이유전역 변수를 직접 사용⸰ 장점 -간결함: 코드가 더 간단하고, 함수 호출 시 매개변수를 추가로 전달할 필요가 없음 -직관성: 빠르게 변수를 참조⸰ 단점 -테스트와 디버깅의 어려움: 함수가 외부 상태에 의존하게 되어 유닛 테스트가 어렵고, 코드의 이해도가 떨어짐 -부작용의 위험: 전역 변수를 수정하는 함수는 다른 부분에서도 영향을 미칠 수 있어, 부작용이 발생 매개변수로 전달⸰ 장점 -테스트와 디버깅의 용이성: 외부 상태에 의존하지 않으므로 테스트가 용이하고, 함수의 의도를 명확하게 파악 -부작용의 방지: 함수가 직접 수정하지 않고, 수정된 결과를 반환하기 때문에 함수의 부작용을 줄일 수 있음 -재사용성: 함수가 다양한 상태를 입력으로 받아 동작⸰ 단점 -코드의..
사용자에게 입력받기const readline = require('readline');const rl = readline.createInterface({ input: process.stdin, output: process.stdout});let input = [];function getInput() { console.log(); process.stdout.write("> YYYY-MM-YY 형식으로 날짜를 입력해주세요. "); rl.once("line", (line) => { input = line.trim().split("-").map(Number); if (isValid(input)) { rl.close(); main(input); } else { ..
StackStack⸰ 선형 자료형⸰ LIFO(Last In First Out)⸰ 이전의 작업 내용을 저장해 둘 필요가 있을 때 사용class Stack{ constructor(){ this.stack = [] } push(item){ this.stack.push(item) } pop(){ return this.stack.pop() } peek(){ return this.stack[this.arr.stack-1] }}const stack = new Stack();stack.push(1);stack.push(2);stack.push(3);stack.pop(); // 3push(): 데이터 삽입pop(): 데이터 추출..
random( )random( )⸰ 0부터 1 미만까지 무작위로 부동소수점의 난수를 추출Math.random() * (최댓값 - 최솟값) + 최솟값; ⸰ (최댓값 - 최솟값) : 원하는 범위의 숫자 개수⸰ + 최솟값 : 시작하는 숫자 ⸰ 자연수로 바꿔주려면,Math.floor(Math.random() * (최댓값 - 최솟값) + 최솟값); Math.floor(Math.random( ))0 0, 1Math.floor(Math.random( ) * (10 - 1) + 1)1 1 ~ 10Math.floor(Math.random( ) * (10 - 3) + 1)3 3 ~ 10
substr( ) / substring( ) / slice( )substr(startIdx, length)⸰ startIdx 부터 length 길이만큼 string 에서 잘라서 반환⸰ 기존 배열 업데이트 Xlet str = "네이버 부스트캠프";let result = str.substr(2, 5);console.log(str); // 네이버 부스트캠프 console.log(result); // 버 부스트substring(startIdx, endIdx)⸰ startIdx 부터 endIdx 전까지 string 에서 잘라서 반환⸰ startIdx > endIdx 인 경우 : startIdx 값과 endIdx 값을 바꾸어 처리 ⸰ startIdx ⸰ 기존 배열 업데이트 Xlet str = "네이버 ..
아스키코드 변환// 문자열 => 아스키코드 값"문자열".charCodeAt([문자열 자릿수]);// 아스키코드 값 => 문자열String.fromCharCode(아스키코드 값);33!64@95_34"65A96`35#66B97a36$67C98b37%68D99c38&69E100d39'70F101e40(71G102f41)72H103g42*73I104h43+74J105i44,75K106j45-76L107k46.77M108l47/78N109m48079O110n49180P111o50281Q112p51382R113q52483S114r53584T115s54685U116t55786V117u56887W118v57988X119w58:89Y120x59;90Z121y6091[122 z61=92\123{62>93]124|63?9..