JavaScript

호이스팅 (Hoisting)JavaScript 엔진이 코드 실행 전에 변수/함수 선언을 스코프 최상단으로 끌어올리는 동작.var 호이스팅console.log(a); // undefined (에러 아님)var a = 5;// 엔진이 이렇게 처리:var a; // 선언만 끌어올림console.log(a); // undefineda = 5; // 할당은 제자리함수 선언식 — 통째로 호이스팅sayHello(); // ✅ "Hello!" — 선언 전에 호출 가능function sayHello() { console.log("Hello!");}함수 표현식 — 호이스팅 안됨sayHi(); // ❌ TypeError: sayHi is not a functionvar sayHi = ..
스코프 (Scope)변수에 접근할 수 있는 유효 범위.// var — 함수 스코프function foo() { var x = 1;}console.log(x); // ❌ ReferenceError// let/const — 블록 스코프{ let y = 2;}console.log(y); // ❌ ReferenceError// var는 블록을 무시{ var z = 3;}console.log(z); // ✅ 3스코프 체인변수를 찾는 방향: 안쪽 → 바깥쪽 → 전역 → ReferenceErrorconst a = "전역";function outer() { const b = "outer"; function inner() { console.log(a); // "전역" — 전역까지 올라가서 찾음 con..
var / let / const구분varletconst스코프함수 스코프블록 스코프블록 스코프재선언✅ 가능❌ 불가❌ 불가재할당✅ 가능✅ 가능❌ 불가호이스팅✅ (undefined로)✅ (TDZ)✅ (TDZ)var의 문제점// 블록 밖으로 새어나옴if (true) { var x = 10;}console.log(x); // 10 — 의도치 않게 접근됨// let이라면?if (true) { let y = 10;}console.log(y); // ReferenceError// for 루프 클로저 버그for (var i = 0; i console.log(i), 100);}// 3, 3, 3 — var는 함수 스코프라 루프 끝난 시점의 i=3을 참조for (let i = 0; i console.log(i), 1..
💁‍♀️ 겹치는 선분선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요. lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다. 선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다. 입출력 예 설명 입출력 예 #1두 번째, 세 번째 선분 [2, 5], [3, 9]가 [3, 5] 구간에 겹쳐있으므로 2를 return 합니다.입출력 예 #2겹친 선분이 없으므로 0을 retu..
💁‍♀️ 평행점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다.[[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록solution 함수를 완성해보세요. 제한사항dots의 길이 = 4dots의 원소는 [x, y] 형태이며 x, y는 정수입니다.0 ≤ x, y ≤ 100서로 다른 두개 이상의 점이 겹치는 경우는 없습니다.두 직선이 겹치는 경우(일치하는 경우)에도 1을 return 해주세요.임의의 두 점을 이은 직선이 x축 또는 y축과 평행한 경우는 주어지지 않습니다.입출력 예dotsresult설명[[1, 4], [9, 2], [3, 8],..
function solution(arr){ const newArr = []; for(i = 0; i 스택, 큐 후입선출 방식으로 풀이
💁‍♀️ 예산S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다. 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다. 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요. 👩‍💻 풀이functio..
Super - 부모 클래스 - super 키워드는 constructor 안에서랑 함수에서만 사용할 수 있다. class Person { name; year; constructor(name, year) { this.name = name; this.year = year; } sayHello() { return `Hello I'm ${this.name}`; } } class Singer extends Person { sing() { return `노래합니다.`; } constructor(name, year, part) { // 부모 클래스 // Person() 이거랑 똑같음 super(name, year); this.part = part; } sayHello() { // undefined입니다. rap 파트입..
상속, Inheritance - 상속은 객체들 간의 관계를 구축하는 방법이다. - 수퍼 클래스(또는 부모 클래스)등의 기존의 클래스로부터 속성과 동작을 상속받을 수 있다. - 공통되는 데이터를 정리할 수 있는 방법이다. class Person { name; year; constructor(name, year) { this.name = name; this.year = year; } } class Singer extends Person { sing() { return `노래합니다.`; } } class Actor extends Person { acting() { return `연기합니다.`; } } const zico = new Singer("zico", 1993); console.log(zico); // ..
Static - 객체에 귀속되지 않는다. - 클래스에 직접 귀속돼서 new로 쓸 필요 없다. class Person { name; year; static groupName = '쑤'; constructor(name, year) { this.name = name; this.year = year; } // 함수도 가능 static returnGroupName() { return '쑤'; } } const soo = new Person('soo', 1997); // 객체에 귀속되지 않는다. console.log(soo);// Person { name: 'soo', year: 1997 } // 그럼 어디에 귀속돼있나? // 클래스 자체에 귀속되어있다! console.log(Person.groupName)// 쑤..
sooyoung.c.dev
'JavaScript' 태그의 글 목록 (2 Page)