목록분류 전체보기 (147)
게으른개발너D
브라우저에 URL을 입력하면 무슨 일이 발생할까? 브라우저 주소창에 tistory를 입력하면, 잠깐의 로딩 후에 tistory 사이트가 보이게 된다. 잠깐의 로딩 사이에 도대체 어떤 일이 발생하길래 웹사이트가 이동하게 되는걸까?! Step 1. URL을 해석한다. schema://:@:/ 예시 http://example.com:8761/members ftp://admin:1q2w3e4r@example.com/image.png mailto:kciter@naver.com http:programmers.co.kr url은 스키마, 계정정보, 호스트, 포트, 패스 정보로 이루어져 있다. 여기서 스키마는 프로토콜이 들어가는 영역이다. 계정정보는 ftp를 이용한 사람이라면 잘 알 것이다. 말 그대로 인증이 요구되는..
✨ 스코프 유효 범위라고도 부르며 변수가 어느 범위까지 참조되는 지를 뜻한다. 어디서도 접근 가능한 전역 스코프(Global Scope)가 있고, 해당 스코프 컨텍스트 안에서만 접근 가능한 지역 스코프(Local Scope)로 나뉜다. const a = 5; // Global Scope { const b = 3; // Local Scope console.log(a, b); // 5, 3 } console.log(a, b); // Error! var를 사용하면 개발자가 예상치 못한 오류가 생길 수 있다. 블록 내부에 새롭게 선언하더라도 블록 외부 값도 변하게 된다. var a = 5; { // 호이스팅 되어 변수 선언이 상단으로 올라가버린다. var a = 10; console.log(a); // 10 }..
✨ Control Flow Control Flow는 우리가 흐름을 제어하는 방법 중 하나로, 조건이나 반복을 통해 상태를 제어하는 것을 말한다. 코딩을 처음 배울 때 다루는 if와 for 등의 방법이 있다. 흐름제어는 두가지 방법이 있다. Control Flow, Data Flow Control Flow 우리가 일반적으로 알고있는 조건문이나 반복문 goto if/ then/ else switch/ case for/ while let a = [1, 2, 3, 4, 5]; for (let i = 0; i < 5; i += 1) { if (a[i] % 2 === 0) { console.log(a[i]); } } Data Flow 함수형 프로그래밍 방식으로 구현이 가능함 stateless recursion pi..
https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Expressions_and_operators 표현식과 연산자 - JavaScript | MDN 이번 장에서는 JavaScript의 표현식과 함께 할당, 비교, 산술, 비트 계산, 논리, 문자열, 삼항 등 다양한 연산자를 살펴보겠습니다. developer.mozilla.org 일반적으로 웹사이트는 여러개의 자바스크립트로 이루어져 있다. 대부분 스크립트 언어의 특징이지만 자바스크립트는 파일들을 각각 별개의 프로그램으로 취급하고 있다. 자바스크립트 프로그램은 무엇으로 이루어져있을까? 그것은 앞으로 알아볼 표현식(Expressions)과 문장(Statements) 두 가지 카테고리로 이루어져 있다. ✨ 표..
변수를 선언할 때 자바스크립트 내부에선 어떤 일이 발생할까? 해당 코드를 실행할 때 자바스크립트는 변수에 고유식별자를 생성하고 메모리에 주소를 할당한다. 최종적으로 생성한 주소에 값을 넣게 된다. 이 과정을 시각화 하면 다음과 같다. 우리가 선언한 변수나 상수는 값을 바라보고 있는 것이 아닌 메모리 주소를 바라보고 있다. 만약 여기에 새로운 변수에 기존 변수를 대입하면 어떻게 될까? 답은 간단하다. 아래 그림과 같이 기본 변수의 메모리 주소를 참조하게 된다. 만약 기존 변수를 조작하면 어떻게 될까? 두번째 생성한 변수의 값도 변하게 될까? 이번에는 그렇지 않다. 새로운 메모리 주소를 할당 받고 그곳에 값을 넣게 된다. 그 이유는 자바스크립트에서 원시 값은 변경이 불가능하기 때문이다. 따라서 원시 타입의 ..
https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서..
✨ 비트 연산자 (Bit Operator) 비트를 직접 조작하는 연산자 // 비트 연산자 const x = 10; // 1010 const y = 12; // 1100 x & y; // AND - 8 x | y; // OR - 14 x ^ y; // XOR - 6 // 000000000000000000000000000001010 // 111111111111111111111111111110101 // 2의 보수 ~x; // NOT - -11 x > 1; // Right Shift - 101 - 5 ✨ 비트 마스크 (BitMask) 이진법 성질을 이용하여 문제를 해결하는 방법 특정 알고리즘은 아니고 비트 연산을 이용한 일종의 코딩 기법 이진수가 자료 구조로 사용된다. ex) [true, true, false..
https://school.programmers.co.kr/learn/courses/30/lessons/12983 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 단어 퍼즐은 주어진 단어 조각들을 이용해서 주어진 문장을 완성하는 퍼즐입니다. 이때, 주어진 각 단어 조각들은 각각 무한개씩 있다고 가정합니다. 예를 들어 주어진 단어 조각이 [“ba”, “na”, “n”, “a”]인 경우 "ba", "na", "n", "a" 단어 조각이 각각 무한개씩 있습니다. 이때, 만들어야 하는 문장이 “banana”라면 “ba”, “na”, “n”, “a”의 4개를 사용하..