본문 바로가기

분류 전체보기131

유돈노 7장 - 클로저 최소노출원칙, 블록과 함수스코프로 변수노출을 최소화한다>유지보수 쉽고, 스코프의 이름충돌 문제 등을 피할수 있음클로저도 POLE기반. 변수를 더 제한된 스코프로 캡슐화한다. 이러면 변수를 더 넓은 범위에서 사용가능클로저는 함수형프로그래밍, 모듈, 클래스지향설계 및 프로그래밍에서 가장 중요한 언어특성클로저 관찰하기클로저는 오직 함수에서만 일어나는 함수의 동작. 클로저를 관찰하려면 반드시 함수를 호출해야함.그리고 호출된 함수가 해당함수를 정의한 스코프체인 아닌 다른분기branch에서 호출해야함. (다른스코프에서 호출해야한다는뜻?)내부함수가 외부스코프에 있는 변수를 참조하는것=클로저학문적으로는 함수를 호출할때 생기는 greetStudnet()인스턴스 각각이 외부변수 students, studentID를 감싸고.. 2024. 10. 24.
YDKJS (유돈노JS) 6,8 - 스코프 노출제한, 모듈 어떻게, 왜 함수와 블록을 사용해 변수를 다양한 스코프로 구성해야 할까?최소 노출의 원칙(POLE) : principle of least exposure블록은 왜 스코프가 필요할까.최소 권한의 원칙(POLP:least privilege)-정보보안원칙 중 하나. 방어적 아키텍처 설계.POLE에 따라 스코프마다 등록된 변수의 노출을 최소화해야함.>>가능한 작고 깊게 중첩된 스코프에 변수선언.모든 변수를 전역스코프에 배치하면 안되는 이유?이름 충돌-예기치않은 작동-비공개변수를 의도하지 않은 종속성-노출된 비공개함수를 사용하고 의존한다면 향후 리팩토링시 안좋다.일반(함수)스코프에 숨기기함수 스코프 지정이 유용한 경우 - 팩토리얼함수, 이미 계산된건 캐싱해 사용=메모이제이션.(캐시는 클로저에 의존)근데 cache.. 2024. 10. 17.
윈도우 git bash에서 npm login 오류 (npmrc파일) npm login 의 동작 명령어를 실행하면 사이트로 이동해 사용자가 입력한 아이디, 패스워드 정보를 HTTP요청을 통해 npm레지스트리 서버로 전송된다. npm서버는 사용자계정정보를 계정DB에서 확인하고, 일치하면 서버에서 인증토큰을 생성해 사용자에게 전송한다. 이 토큰은 사용자의 컴퓨터에서 ~/.npmrc 파일에 저장된다. 이 파일은 이후 npm install, npm publish등 명령어를 실행할때 인증된 사용자임을 증명한다.  npmrc : npm설정 및 로그인후 발급된 인증토큰이 저장된 파일 (민감정보이므로 공개하면 안됨)npmrc 파일의 내용을 확인해보고 싶다면 npmrc파일이 저장된 디렉터리로 이동후 아래 명령어로 확인 가능하다.$ cat ~/.npmrc npmrc파일이 저장된 디렉터리 (.. 2024. 10. 16.
1008 유돈노 웹워커https://developer.mozilla.org/ko/docs/Web/API/Web_Workers_API 일반JS에서는 오류나지만 개발자도구에서는 오류안나기도함 >> 전역스코프 작동방식, 호이스팅, 가장바깥스코프에서 블록스코프선언할때 >>언제?? 어떤사례인지?? 모듈이 아닌 JS파일은 뭔데..?  모듈이 아닌 JavaScript 파일은 ES6(ECMAScript 2015) 이전에 사용되던 전통적인 JavaScript 파일 모듈 시스템을 사용하는 JavaScript 파일은 ES6에서 도입되었으며, 모듈로 작성된 파일은 각각의 파일이 독립된 스코프를 가집니다. 즉, 모듈 내에서 선언된 변수나 함수는 전역 객체에 등록되지 않고 해당 모듈 내에서만 접근 가능합니다type 속성에 module을 추가하면.. 2024. 10. 8.
유돈노 브라우저의 창, window객체전역스코프가 처리되는 가장 순수환경은 브라우저에서 단독js파일 로드할때(파일로드시 브라우저가 자동으로 추가하는게 없어서 순수가 아니라 브라우저는 코드침입을 최소화, 간섭도 하지않음)식별자가 전역스코프에 선언됨=전역객체(브라우저window객체)프로퍼티로 식별자 접근 가능 window.name 이런식으로>>그러나 모든JS호스트환경에서 보장되진않는다전역을 가리는 전역 >>좋지않다. 전역에서는 항상 var를 쓰도록!섀도잉=같은이름의 변수일때 안쪽스코프변수가 바깥쪽스코프변수를 가리고 접근막는것전역변수와 같은이름 전역프로퍼티는 섀도잉과 다르게 작동window.something=42let something="John" //전역변수지만, 전역객체 프로퍼티로 추가되지않음console.log.. 2024. 10. 8.
YDKJS (유돈노JS) 부록A - 암시적스코프 암시적스코프1. 매개변수스코프 함수매개변수는 함수스코프에서 지역으로선언한변수와 동일함.(단순매개변수일경우)작가왈 예외 - 기본값이 있는 매개변수, ...나머지매개변수, 비구조화매개변수(디스트럭쳐링.구조분해할당)매개변수목록(args)이 자체 스코프를 형성하고, 함수스코프는 매개변수목록(args)스코프에 중첩됨주의) 지역변수로 매개변수를 섀도잉하지 말자, 기본매개변수에서 다른매개변수를 참조하지 말자동작 과정 (매개변수에 함수 표현식이 있을 경우의 스코프 형성)function example(x, y = () => x) { console.log(x); // 첫 번째 매개변수 x 출력 console.log(y()); // y 함수 호출하여 반환값 출력 var x = 10; console... 2024. 10. 6.