웹
-
[Javascript] var웹/JavaScript 2023. 1. 13. 19:26
var : let과 const가 생기기 전 변수 선언에 사용되던 문 각종 문제점들을 갖고 있으므로 오늘날에는 사용하지 않을 것을 권장 1. 선언 없이도 사용 가능 notDeclared = 1; // 미리 선언한 부분이 없을 시 var로 만들어짐 console.log(notDeclared); // num이 var로 선언된 것 for (num of [1, 2, 3]) { console.log(num); } 2. 재선언 가능 코딩 중 실수의 여지가 됨 let a = 1; let a = 2; // ⚠️ 오류 const b = 1; const b = 2; // ⚠️ 오류 var c = 1; var c = 2; 3. 블록 레벨 스코프 무시 let num1 = 1; { let num1 = 2; { let num1 =..
-
[Javascript] 에러 핸들링, try, catch, finally, error, error bubbling웹/JavaScript 2023. 1. 13. 19:16
🐛 에러 핸들링 error handling 의 필요성 에러/에러 error 발생에 대비하지 않으면 프로그램이 종료됨 console.log('에러 발생 전'); // ⚠️ 오류를 발생시키는 코드 (3).split(''); // 출력되지 않음 console.log('에러 발생 후'); I. 자바스크립트의 에러 핸들링 👉 MDN 문서 보기 1. try ... catch 문 console.log('에러 발생 전'); try { (3).split(''); } catch (e) { console.error('🛑 에러!!', e); } console.log('에러 발생 후'); try 블록 에러 발생 여지가 있는 코드 포함 이곳에서 발생한 에러는 프로그램을 멈추지 않음 catch 블록 에러 발생시 ..
-
[Javascript] 제너레이터, generator웹/JavaScript 2023. 1. 13. 18:55
제너레이터 generator function* genFunction () { console.log('하나를 반환합니다.'); yield '하나'; console.log('둘을 반환합니다.'); yield '둘'; console.log('셋을 반환합니다.'); yield '셋'; } const genFunc = genFunction(); // 반복 수행해 볼 것 // 💡 아래의 코드가 블록의 코드에 대한 제어권을 가짐 console.log( genFunc.next() ); 함수 내 코드들을 모두 실행하지 않고 외부 호출자에게 제어권을 양도 - "계속할까요?" 이터러블과 이터레이터를 보다 간결하게 구현 가능 👉 MDN 문서 보기 I. 기본 사용법 1. 제너레이터 함수/메서드 선언 function ..
-
[Javascript] Set, Map웹/JavaScript 2023. 1. 13. 18:24
중복되지 않는 값들의 집합 표준 내장 객체 중 하나 💡 배열과의 차이: 동일한 값을 여러 번 포함할 수 없음 값들의 순서가 무의미함 I. 기본 사용법 // Set 생성 const set1 = new Set(); // add 메서드 - 요소 추가 set1.add(1); set1.add('A'); set1.add(true); console.log(set1); // 이미 포함된 요소는 추가하지 않음 set1.add(1); set1.add(true); console.log(set1); // 배열을 인자 넣으면 생성 + 초기화 // 중복된 요소 제거 const set2 = new Set([1, 1, 1, 'A', true]); console.log(set2); // has 메서드 - 요소 포함여부 ..
-
[Javascript] Symbol웹/JavaScript 2023. 1. 13. 17:46
다른 값과 절대 중복되지 않는 유일무이한 값 원시 타입 👉 MDN 문서 보기 👉 MDN 문서 보기 (영문 - 더 자세한 정보) I. 기본 생성과 활용 const mySymbol = Symbol(); console.log(typeof mySymbol, mySymbol); // 💡 new를 사용하지 않음 const mySmbol = new Symbol(); // ⚠️ 오류 발생! 문자열 값을 인자로 줄 수 있음 해당 심벌에 대한 설명일 뿐, 각 심벌의 값은 유일무이 const symbol1 = Symbol('hello'); const symbol2 = Symbol('hello'); console.log(symbol1, symbol2); // 래퍼 객체(Symbol)의 인스턴스 프로퍼티 console...
-
[Javascript] 2진수, 8진수, 16진수, 비트 연산자, bigInt웹/JavaScript 2023. 1. 13. 17:40
I. 다른 진법들 👉 MDN 문서 보기 2진법 binary 0b 뒤로 숫자 0, 1 를 붙여 표현 [ 0b1, 0b10, 0b11, 0b100, 0b101 ].forEach(i => console.log(i)) console.log( 0b2 // ⚠️ 토큰으로 인식 - 오류 ); 8진법 octal 0o 뒤로 숫자 0~7 를 붙여 표현 [ 0o7, 0o10, 0o100, 0o1000, ].forEach(i => console.log(i)) console.log( 0o8 // ⚠️ 토큰으로 인식 - 오류 ); 16진법 hexadecimal 0x 뒤로 숫자 0~9, A~F 를 붙여 표현 [ 0x9, 0xA, 0xB, 0xC, 0xd, 0xe, 0xf, 0x10, 0xFFFFFF ].forEach(i => co..
-
[Javascript] JSON, stringfy, parse, toJSON, 깊은복사,structuredClone웹/JavaScript 2023. 1. 13. 09:31
I. JSON JavaScript Object Notation 복잡한 구조를 가질 수 있는 데이터를 한 줄의 문자열로 표현 서버와 클라이언트 등 데이터들을 주고받는 주체들 사이에 널리 사용 II. JSON 객체의 정적 메서드 1. stringify - 객체를 문자열로 직렬화 serialize 👉 MDN 문서 보기 const person = { name: '김달순', age: 23, languages: ['Korean', 'English', 'French'], education: { school: '한국대', major: ['컴퓨터공학', '전자공학'], graduated: true, } }; const personStr = JSON.stringify(person); console.log(typeo..
-
[Javascript] 프로퍼티 어트리뷰트, getOwnPropertyDescriptor,defineProperty,getDeepFrozen웹/JavaScript 2023. 1. 13. 09:07
I. 프로퍼티 어트리뷰트 property attributes 객체의 프로퍼티가 생성될 때 엔진에 의해 자동 정의되는 상태 💡 프로퍼티에는 두 종류가 있음 const person = { // ⭐️ 1. 데이터 프로퍼티들 fullName: '홍길동', ageInNumber: 25, // ⭐️ 2. 접근자 프로퍼티들 get name () { return this.fullName .split('') .map((letter, idx) => idx === 0 ? letter : '*') .join(''); }, get age () { return this.ageInNumber + '세'; }, set age (age) { this.ageInNumber = Number(age); } } console.lo..