본문 바로가기

Javascript/YDKJS15

부록 A,B 화살표 함수화살표함수가 필요한경우? this를 렉시컬변수처럼 사용해야할때 .bind(this)나 var self=this대신 IIFE변형모든 IIFE에도 이름이 있어야한다. IIFE를 정의하는 다른 방법이 있나? ()로 묶는거 말고+function soIs(){}()void function asWell(){}() 호이스팅:함수와 변수함수선언문은 컴파일단계에서 호이스팅, 전역스코프에 선언된 식별자함수호이스팅을 이용해 거꾸로 배치방식 - 가독성 좋아짐, 변수호이스팅은 아님변수호이스팅 거꾸로 배치하는 경우는 비공개멤버 변수일때 아주 드문 경우에!cache={} //사용은 위에서//공개API에서 cache를 사용함var publicAPI = Object.assign(....,{getStudents,refresh.. 2024. 11. 22.
유돈노 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.
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.