본문 바로가기

JS7

You don't know JS yet(1.5~1.8) 1.5 하위 호환성과 상위 호환성JS를 지탱하는 기본 원칙 중 하나는 하위 호환성 보장이다.그런데 많은 개발자들이 하위호환성을 잘 모르고 상위호환성 개념과 혼동하기도 한다. 1. 하위호환성(Backward Compatibility)정의: 새로운 버전의 시스템이나 소프트웨어가 이전 버전과 호환되는 능력.특징:기존 코드나 기능이 새로운 환경에서도 문제 없이 작동함.사용자 입장에서 업데이트 시 추가 작업이 거의 없음.예시: JS는 과거에 작성된 코드가 최신 브라우저에서도 작동하도록 설계됨.2. 상위호환성(Forward Compatibility)정의: 현재 버전의 시스템이나 소프트웨어가 미래의 버전과 호환되는 능력.특징:미래의 기능이나 표준을 대비해 설계됨.보통은 제한적이며, 완벽한 구현이 어려움.예시: 새로운.. 2025. 1. 23.
Node.js 교과서 PART2 (1) 호출 스택"누가 먼저 실행될까?"자바스크립트는 프링글스통과 같다.먼저 쌓인게 나중에 나간다.LIFO(Last in First Out) , 후입선출이라고 부른다. anonymous는 뭐야?anonymous는 **이름이 없는 함수(익명 함수)**를 호출할 때 호출 스택에 표시되는 기본 이름이다.브라우저나 Node.js가 코드의 시작점을 관리하기 위해 사용하는 기본 값이다.우리가 함수를 선언하면서 이름을 주지 않거나, 함수 표현식으로 함수를 만들어 사용하면 생긴다.즉 우리가 무언가를 실행하면 가장 밑에 깔리고 프로그램이 다 실행되고 annoymous까지 끝나야 실행이 끝난 것이다.  var,conmst,let var는 js의 적폐다. 적폐의 특성을 알아보자. 가장 큰 차이점 : 블록 스코프 (var는 함수 .. 2025. 1. 19.
Node.js 교과서 PART1 Node의 정의Node.js는 크롬 V8 자바스크립트 엔진으로 빌드 된 자바스크립트 런타임입니다.node는 서버도 아니고 JS엔진도 아니다.JS엔진을 사용 한 JS런타임이다. (런타임 : 프로그램이 실행되는 환경) JS는 원래 브라우저다. 노드 없었을 땐 JS는 원래 브라우저다. HTML에다가 스크립트,소스 등을 넣었다. 그럼 같이 읽었다 즉HTML이 없으면 JS를 못읽었다.(HTML에 종속되어 있다.)node.js를 쓰면 HTML이나 브라우저의 종속성에서 벗어난 것이다.브라우저,HTML이 없어도 실행할 수 있는 환경인 것이다.이게 왜 중요한가? JS가 app,게임 등 다양한 환경에서 만들 수 있다는 것이다.  노드는 서버 아닌가요? 엄밀히 말하면 서버가 아니라 서버로 쓸 수 있는 런타임이다.자바로 치면.. 2025. 1. 18.
You don't know JS (1.1~1.4) 오늘은 첫시간이라  챕터는 1.1~1.4까지 하기로 했다.1.1 책에 대하여1.2자바스크립트 이름의 유래1.3 명세서1.4 JS의 다양한 얼굴  1.1은 생략하고 1.2부터 시작한다. 1.1 JS랑 JAVA랑 연관이 있나요?일단 javascript의 어원부터 보면 좋을 거 같다.java + script인데 각각 이런 내용이다.java : oracle의 java가 당시에 유행이어서 어그로성으로 지었다(사실 java랑 상관 없음)script : 넷스케이프에서 웹사이트의 생동감 있는 느낌을 표현하기 위해 이름을 바꿨다.이 두가지를 더해서 javascript가 된 것이다.간단히 표로 보겠다. 1995Mocha넷스케이프라는 회사의 브랜던 아이크가 10일만에 만듦1995년 후반LiveScript생동력 있는 스크립트.. 2025. 1. 16.
class , 생성자 함수 , 프로토타입 메서드 사실 class는 두개 담은 바구니다.생성자 함수 = 변수만드는 함수(constructor) +프로토타입 메서드 = 만든 변수 가지고 할 함수(protoype method)  생성자함수 : 자바스크립트에서 객체를 만들고 초기화하는 특별한 함수다.생성자함수는 일종의 템플릿으로 , 여러개의 유사한 객체를 쉽게 만들 수 있게 해준다.즉 , "변수집합을 만드는 함수"인 것이다. 생성자 함수 사용법 1 1.대문자로 시작하는 이름 (파스칼케이스)생성자 함수의 이름은 보통 대문자로 시작한다. 2.this 키워드 사용생성자 함수 안에서 'this'라는 키워드는 개로 생성된 객체를 가르킨다. 3.new 키워드와 함께 사용생성자 함수는 'new'키워드와 함께 호출되어야 한다.'new' 키워드를 사용하면 새로운 객체가 생성.. 2024. 7. 19.
Closer 클로저 : 실행 컨텍스트가 정상적으로 제거(종료)되지 못하는 현상 function outerFunc() { let count = 0; return function innerFunc() { count++; console.log(count); };}const counter = outerFunc();counter();counter();counter();counter();결과 :1,2,3,4  실행할 때마다 1씩 증가한다.원래 자신의 차례가 끝나면 , 콜스택에서 본인은 제거되어야 한다.근데 innerFunc 시점으로 보면, "outerFunc이 자신의 값을 참조하네?"내 값 참조 안하면 버그가 되는데? => 그럼 나 못사라지는데? => 값이 메모리에 남아야겠다.이 현상이 "closer"가 된다... 2024. 7. 19.