55,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 중고급: 엔진 핵심
다른 분들에 비하면 보잘것 없지만 저도 풀어보았습니다
강의 잘 듣고있습니다. 자바스크립트는 어려워 라는 편견을 가지다가 선생님 강의 접하면서 굉장히 재밌게 듣고있습니다. 이번에 정리시간에 나온 문제를 나름대로 풀어보긴 풀어보았으나 다른 분들에 비하면 아직 갈 길이 머네요. 더욱 더 노력하겠습니다~! 항상 좋은 강의 감사합니다. var member = { Jan: { item: { title: 'JSBook1', amount: 100 }, point: [10, 20, 30] }, Feb: { item: { title: 'JSBook2', amount: 200 }, point: [40, 50, 60] }};var sumResult = 0;function arrayShow(list) { console.log(list); for (k = 0; k < list.length; k++) { sumResult += list[k]; }}function show(param) { for (var type in param) { if (typeof param[type] === 'string' || typeof param[type] === 'number') { console.log(type + ' : ' + param[type]); } else if (param[type] instanceof Array) { arrayShow(param[type]); } else { show(param[type]); } }}show(member);console.log(sumResult);
- 미해결자바스크립트 중고급: 엔진 핵심
정리시간 질문드립니다
선생님 정리시간 과제중에 질문드립니다. var fn = book.get;에서 book.get프로퍼티의 값을 반환하여, function 오브젝트가 fn 변수에 할당되어서, 글로벌 변수 fn 이, get과 프로퍼티 값은 같지만, 독립된 function 오브젝트로 존재하는 것인가요
- 미해결자바스크립트 중고급: 엔진 핵심
constructor가 왜 지워지죠?
좋은 강의 감사드립니다. 처음에 강의 듣고 복습할 떄까지는 의문이 생기지 않았는데 이번에 공부할 때는 constructor가 없어지는 게 이해가 안됩니다. Book.prototype 오브젝트 안에 constrctor와 --proto--가 있는데, Book.prototype = {name1:value, ...}형태로 설정을 해주면 기존에 있던 프로퍼티들은 유지되고 추가한 프로퍼티들이 들어가면 되는거 아닌가요? 답변 부탁드리겠습니다.
- 미해결자바스크립트 중고급: 엔진 핵심
파라미터 값 매핑 정리
var obj = {}; obj.getTotal = function(one, two, two) { console.log(one + two); }; obj.getTotal(11, 22, 55); 초기화 1. obj.getTotal(11, 22, 55) 함수가 호출되면 파라미터 값을 실행 콘텍스트에 넘겨줍니다. 2. 파라미터 이름에 값을 매핑 getTotal 오브젝트의 [[FormalParameter]]에서 호출된 함수의 파라미터 이름을 구함 ["one", "two"] 생성된 argu 배열의 인덱스에 따라 차례대로 값을 구하며 two를 덮어쓰게 됩니다. 선언적 환경 레코드에 {one: 11, two: 55} 형태로 설정합니다. 3. 내부 함수 선언문을 검색 - 해당사항 없음 4. 내부 변수 검색 obj에 undefined; 5. obj에 {} 할당 6. 초기화할 코드가 없기에 다시 첫 줄로 이동하여 함수 코드를 실행합니다. 실행단계 7. 선언적 환경 레코드는 {one: 11, two: 55} 상태 8. console.log(one + two)로 이동 선언적 환경 레코드에서 one, two 값을 구하고 그 결과 값인 66 출력 최대한 그 구성 맥락을 이해하려 하는데 컴포넌트 분류 개념이 확실한지 계속 돌려보고 있어요. 실행 콘텍스트(EC): { 렉시컬 환경 컴포넌트(LEC) = { 환경레코드(ER) : { 선언적 환경 레코드(DER) : { argument : {one: 11, two: 55} }, 오브젝트 환경 레코드(OER) : {} }, 외부 렉시컬 환경 참조(OLER) : { obj : {} } }, 변수 환경 컴포넌트(VEC) : {}, this 바인딩 컴포넌트(TBC) : {} }
- 미해결자바스크립트 중고급: 엔진 핵심
실행 콘텍스트 실행과정 정리
function book(){ function get() { return point; }; var point = 123; return get(); }; console.log(book()); 1. function 키워드를 만나게 되고 book 오브젝트 생성 2. [[scope]]에 글로벌 오브젝트 설정 3. 변수 확인, 해당사항 없음 4. book() 으로 함수를 호출하면 엔진은 실행 콘텍스트를 생성하고, 실행 콘텍스트 안으로 이동합니다. 준비 단계 - 환경조성 5. 컴포넌트(LEC, VEC, TBC)를 생성하여 실행 콘텍스트에 첨부 6. 환경레코드(ER)를 생성하여 LEC에 첨부 - 함수 안의 함수, 변수를 환경레코드에 바인딩 7. 외부 렉시컬 환경 참조(OLER)를 생성하고 렉시컬 환경 컴포넌트 내 첨부 8. 글로벌 오브젝트의 [[scope]] 를 외부 렉시컬 환경 참조에 설정(참조) 실행 콘텍스트(EC): { 렉시컬 환경 컴포넌트(LEC) = { 환경레코드(ER) : { get : function 오브젝트, point: undefined; }, 외부 렉시컬 환경 참조(OLER) : {} }, 변수 환경 컴포넌트(VEC) : {}, this 바인딩 컴포넌트(TBC) : {} } 9. function 키워드를 만나게 되고 get function 오브젝트 생성 10. [[Scope]]에 get 스코프를 설정한다. 11. point 변수에 123 값이 할당 된다. 12. get() 으로 함수를 호출하면 엔진은 실행 콘텍스트를 생성하고, 실행 콘텍스트 안으로 이동합니다. 실행 콘텍스트(EC): { 렉시컬 환경 컴포넌트(LEC) = { 환경레코드(ER) : {}, 외부 렉시컬 환경 참조(OLER) : { point : 123 } }, 변수 환경 컴포넌트(VEC) : {}, this 바인딩 컴포넌트(TBC) : {} } 13. 환경 레코드에서 먼저 찾고 없으면 외부 렉시컬 환경 참조에서 point를 찾습니다. 실행단계 14. 함수 내 코드 실행하여 point 값을 return 합니다. 제대로 이해한게 맞는가요?..
- 미해결자바스크립트 중고급: 엔진 핵심
호이스팅 관련 정리
호이스팅 KeyWord 호이스팅 : 함수 앞에서 함수를 호출 본인 생각 ) 함수 선언문 자체가 해당 스코프의 최상위로 먼저 해석되고 올려지는 현상 함수 선언문 : function 함수명() { 구현 로직 }; 호이스팅에 영향, 초기화 단계에서 function object 할당 함수표현식 : var 함수명 = function () { 구현 로직 }; 호이스팅에 영향 X 예제풀이 1 번 예제 function book() { function getBook(){ return "책1"; }; //여기서 함수 호출 console.log(getBook()); function getBook(){ return "책2" }; }; book(); 함수 선언문 , 함수 호출, 함수 선언문 1. book 함수 호출 2. book 함수 안으로 엔진컨트롤 이동 // 함수 선언문 해석 3. 전체 코드에서 함수 선언문 검색 4. 첫 번째 function 오브젝트 생성(getbook) - scope 등록 5. 두 번째 function 오브젝트 생성(getbook) - scope 등록, value 대체, 호출 가능 6. 엔진 컨트롤 처음으로 이동 // 변수 초기화(추출) - 식별자 해결 7. var 변수 초기화(undefined) - 대상 없음 8. 엔진 컨트롤 처음으로 이동 // 코드 실행 - debugger, console 등 실행코드 동작 9. 해석된 선언문은 건너 뜀 10. console.log로 getBook 호출 11. value로 scope에 등록된 두 번째 getBook에서 선언문 해석, 변수 초기화, 코드실행 과정 수행 12. 책2 반환 13. 콘솔창 출력 14. book 함수 내 반환값이 없기에, void 함수로 처리되어 undefined를 반환 2번 예제 function book(){ debugger var getBook = function(){ return "책1"; }; console.log(getBook()); debugger getBook = function(){ return "책2"; }; debugger }; book(); 함수 표현식, 함수 호출, 함수 표현식 1. book 함수 호출 2. book 함수 안으로 엔진컨트롤 이동 // 함수 선언문 해석 3. 전체 코드에서 함수 선언문 검색 - 대상없음 4. 엔진 컨트롤 처음으로 이동 // 변수 초기화(추출) - 식별자 해결 5. getBook에 undefined 할당 초기화 6. scope에 등록 7. 엔진 컨트롤 처음으로 이동 // 코드 실행 - debugger, console 등 실행코드 동작 8. getBook에 function(){ return "책1"; } 할당 9. scope 등록 10. console.log로 getBook 호출 11. 변수로 지정된 첫 번째 getBook에서 표현식 실행 12. 책1 반환 13. 콘솔창 출력 14. 다음 함수 표현식을 엔진이 해석하지만, 실행코드에 의미가 없기에 순차적인 진행 종료 15. book 함수 내 반환값이 없기에, void 함수로 처리되어 undefined를 반환 3번 예제 function book(){ debugger function getBook(){ return "책1"; }; console.log(getBook()); debugger var getBook = function(){ return "책2"; }; debugger }; book(); 함수 선언문, 함수 호출, 함수 표현식 1. book 함수 호출 2. book 함수 안으로 엔진컨트롤 이동 // 함수 선언문 해석 3. 전체 코드에서 함수 선언문 검색 4. 첫 번째 function 오브젝트 생성(getbook) - scope 등록 5. 엔진 컨트롤 처음으로 이동 // 변수 초기화(추출) - 식별자 해결 6. 변수 getBook에 undefined 할당 초기화 7. scope에 등록 8. 엔진 컨트롤 처음으로 이동 // 코드 실행 - debugger, console 등 실행코드 동작 9. 해석된 선언문은 건너 뜀 10. console.log로 getBook 호출 11. value로 scope에 등록된 getBook에서 선언문 해석, 변수 초기화, 코드실행 과정 수행 12. 책1 반환 13. 콘솔창 출력 14. 다음 함수 표현식을 엔진이 해석하지만, 실행코드에 의미가 없기에 순차적인 진행 종료 15. book 함수 내 반환값이 없기에, void 함수로 처리되어 undefined를 반환 4번 예제 function book(){ debugger var getBook = function(){ return "책1"; }; console.log(getBook()); debugger function getBook(){ return "책2"; }; debugger }; book(); 함수 표현식, 함수 호출, 함수 선언문 1. book 함수 호출 2. book 함수 안으로 엔진컨트롤 이동 // 함수 선언문 해석 3. 전체 코드에서 함수 선언문 검색 4. function 오브젝트 생성(getbook) - scope 등록 5. 엔진 컨트롤 처음으로 이동 // 변수 초기화(추출) - 식별자 해결 6. 변수 getBook에 undefined 할당 초기화 7. scope에 등록 8. 엔진 컨트롤 처음으로 이동 // 코드 실행 - debugger, console 등 실행코드 동작 9. getBook에 function(){ return "책1"; } 할당 10. scope 등록 11. console.log로 getBook 호출 12. 변수로 지정된 getBook에서 표현식 실행 13. 책1 반환 14. 콘솔창 출력 15. book 함수 내 반환값이 없기에, void 함수로 처리되어 undefined를 반환 알맞게 정리된 건지 궁금합니다..
- 미해결자바스크립트 중고급: 엔진 핵심
book 함수가 호출되었을때,
book 함수가 호출되었을때, book 함수의 실행컨텍스트는 생성되지 않나요?
- 미해결자바스크립트 중고급: 엔진 핵심
ES5이상 스코프 체인
여러권의 스크립트 기본서적을 읽었는데, ES5 이상에서 scope chain을 더이상 사용하지 않는다는 것은 처음 들어본 것 같아 질문드립니다. ES5이상에서 declarative environment record 에서 scope chain 정보를 정적으로 가지고 있는거고, 더이상 실행시 동적으로 scope chain에 연결하지는 않는다는,, 용어적인 차이에서 오는 혼동인가요?
- 미해결자바스크립트 중고급: 엔진 핵심
실행 컨텍스트
ES3, ES5모두, 하나의 엔진에서 실행 컨텍스트는 1개인가요?
- 미해결자바스크립트 중고급: 엔진 핵심
스코프 체인 질문드립니다.
안녕하세요~ 강의를 듣다가 궁금한게 생겨 질문드립니다 스코프 체인 강의에서 es3와 es5를 비교해서 설명해주실 때 es3는 동작이 두번 발생한다고 말씀하셨는데 두번이라는게 한번은 함수가 호출될 때 스코프가 생성되는 동작이고 다른 한번은 스코프를 스코프 체인에 연결하는 동작인건가요? 그리고 함수가 호출될 때 스코프를 생성하고 스코프 체인에 연결하는 과정은 호출될 때마다 이루어지는게 아니라 최초로 호출되었을 때 한번만 이루어지는 건가요?
- 해결됨자바스크립트 중고급: 엔진 핵심
강사님 질문드립니다
function book(){ function getBook(){ //함수선언식 return "book1"; } console.log(getBook()); function getBook(){//함수선언식 return "book2"; } } book(); 함수 선언문 초기화 마지막 줄에서 book( )함수를 호출하면 function getBook( ){return "book1";}을 만나서 getBook 오브젝트를 생성한다. getBook( )을 호출하지 않고 아래로 내려간다. function getBook( ){return "book2";}을 만나서 getBook 오브젝트를 생성하려고 하는데, 기존의 오브젝트 이름과 같으면서 같은 function 오브젝트이기 때문에 두 번째로 생성한 getBook 오브젝트로 대체된다. {key: value} 형태로 저장이 되는데 value가 바뀌게 되는 것 변수 초기화 book 함수의 첫 번째 줄로 이동하고 나서 함수 표현식과 변수에 undefined를 설정해야 하는 단계인데, 설정할 대상이 없다. 코드 실행 function getBook( ){return "book1";}이 함수 선언문이기 때문에 아래로 내려간다. getBook( ) 함수를 호출한다. return "book2"의 getBook 함수가 실행이 된다. 호출한 함수로 돌아와서 book2를 콘솔창에 찍는다. 그리고 나서 함수 선언문이기 때문에 처리하지 않는다. function book(){ let getBook = function(){ //함수 표현식 return "book1"; } console.log(getBook()); getBook = function(){ //함수 표현식 return "book2"; } } book(); //book1 //undefined 함수 선언문 초기화 함수 선언문을 발췌해서 초기화를 진행해야 하는데, 설정할 대상이 없다. 변수 초기화 book 함수의 첫 번째 줄로 이동하고 나서 함수 표현식과 변수에 undefined를 설정한다. 코드 실행 function getBook( ){return "book1";}이 함수 표현식을 읽는다. getBook: *f ( )*로 설정된다. getBook( )함수가 호출되고 {return "book1";} 을 갖고 있는 함수 표현식이 실행되면서 book1을 값으로 주면서 콘솔창에 찍힌다. 다음 함수 표현식을 엔진이 해석하고 스코프에 getBook키와 함수 값을 저장하려고 하니깐 이미 저장이 되어있기 때문에 무시가 되지만, 스택에는 재할당이 된 상태로 리턴되지 않고 종료되기 때문에 undefined가 콘솔창에 찍힌다. function book(){ function getBook(){ //함수 선언식 return "book1"; } console.log(getBook()); let getBook = function(){ //함수 표현식 return "book2"; } } book(); //book1 //undefined 함수 선언문 초기화 마지막 줄에서 book( )함수를 호출하면 function getBook( ){return "book1";}을 만나서 getBook 오브젝트를 생성한다. getBook( )을 호출하지 않고 아래로 내려간다. 변수 초기화 book 함수의 첫 번째 줄로 이동하고 나서 함수 선언식은 넘어가고 실행문도 넘어가고 getBook 변수에 undefined로 초기화를 진행한다. 코드 실행 function getBook( ){return "book1";}이 함수 선언문이기 때문에 아래로 내려간다. getBook( ) 함수를 호출한다. getBook의 키값에는 function Object가 설정되어 있기 때문에 { return "book1";}을 갖고 있는 getBook 함수를 실행하면서 book1을 값으로 주고 콘솔창에 찍힌다. getBook 변수를 읽고 오브젝트를 생성하려고 하니 이미 function Object가 값이 설정되어 있기 때문에 실행되지 않고 무시되고 콘솔창에undefined가 찍힌다. function book(){ getBook = function(){ //함수 표현식 return "book1"; } console.log(getBook()); function getBook(){ //함수 선언식 return "book2"; } } book(); //book1 함수선언식 초기화 book( )함수를 호출하면 function getBook( ){return "book2";} 선언문을 만나서 getBook 오브젝트를 생성한다. **getBook: ***f getBook( )*으로 디버그 창에서 확인이 가능하다. 변수 초기화 getBook 변수를 만나면서 undefined를 해주면서 초기화를 진행한다. 코드 실행 함수 표현식을 읽으면서함수 오브젝트를 값으로 할당해준다. 그리고 getBook = f ( ) 로 변경된다. 그리고 getBook( )함수를 호출한다. 호출된 getBook 함수는 return "book1"을 갖고 있기 때문에 book1을 값으로 주면서 콘솔창에 찍힌다. 그다음에는 함수 선언식인데 이미 getBook에는 값이 할당 되어 있기 때문에 무시하고 실행되지 않는다.이렇게 디버깅을 하면서 정리를 해보았는데 맞는 것인지 모르겠습니다.
- 해결됨자바스크립트 중고급: 엔진 핵심
Scope 관련 질문 입니다.
안녕하세요. 항상 질문에 대해 자세하게 답변해주시는 점 감사합니다. 강의를 한 번 다시 들으면서 JavaScript를 정리하다가 function scope 관련해서 궁금한 점이 생겨 글을 올리게 되었습니다. const globalValue = 'global variable'; const test = { value: "function's value", getValue: function() { console.log('this: ', this); console.log('value: ', this.value); function innerFunc() { console.log("Inner Function's this: ", this); } const arrowFunc = () => { console.log("Arrow Function's this: ", this); }; innerFunc(); arrowFunc(); }, }; test.getValue(); [코드결과] this: {value: "function's value", getValue: ƒ}value: function's valueInner Function's this: Window {0: global, 1: global, 2: global, 3: Window, 4: global, …}Arrow Function's this: {value: "function's value", getValue: ƒ} 1️⃣ 위의 코드에서 getValue 함수 내부에 있는 innerFunc의 this는 왜 전역 객체를 참조하는지 궁금합니다. 조사를 해보니 "JavaScript에서는 함수를 호출하면, 해당 함수 내부 코드에서 사용된 this는 전역 객체에 바인딩 된다." 라는 정보를 보게 되었는데, 논리적으로 접근하려고 해도 왜 이렇게 되는건지 이해가 안됩니다. 어쩌면 단순히 생각해서 그렇게 만들어졌기 때문인가요? const setTimeoutTest = { func: function() { setTimeout(function() { console.log(this); }, 1000); }, }; 2️⃣ 위의 코드에서도 this는 전역 객체(window)를 반환하는데, 저는 처음엔 setTimeout이 전역객체에 선언되어 있기 때문이라고 생각했습니다. 그렇다면 사실은 1️⃣번 질문과 마찬가지로 함수 내부의 함수이기 때문일까요? 답변 주시면 감사하겠습니다.
- 미해결자바스크립트 중고급: 엔진 핵심
코딩 시간
강사님, 안녕하세요. 아직 많이 부족한 상태이지만, 강사님께서 내주신 숙제를 한번 시도해봤는데.. 제가 정확하게 답이 맞는 지 모르겠어 이렇게 질문 게시글에 올립니다. ---------------------------- 1 > 함수 선언문, 함수호출(), 함수 선언문 function book(){ function getBook(){ return "책1"; }; // 여기서 함수 호출 console.log(getBook()); function getBook(){ return "책2"; }; }; book(); ---------------------------- 책2 ---------------------------- *이유 ? 자바스크립트 같은 경우에는 함수가 정의된 것이 있는지 전체적으로 확인하고 실행하기 때문에 아래에서 책2가 책1보다 후에 생성된 getBook()이기 때문에 책2가 출력되는 것이라고 생각한다. ---------------------------- 2 > 함수 표현식, 함수 호출(), 함수 표현식 function book(){ var getBook = function(title){ return "책1"; }; // 여기서 함수 호출 console.log(getBook()); var getBook = function(title){ return "책2"; }; }; book(); ---------------------------- 책1 ---------------------------- *이유 ? 바로 위에서 책1로 지정하고 출력하였기 때문에 책1이 출력되며 만약 책2로 지정한 후에 출력한다면 책2로 출력된다. ---------------------------- 3 > 함수 선언문, 함수 호출(), 함수 표현식 function book(){ function getBook(){ return "책1"; }; // 여기서 함수 호출 console.log(getBook()); var getBook = function(title){ return "책2"; }; }; book(); ---------------------------- 책1 ---------------------------- *이유 ? 초기화 단계에서 값이 있는 경우에는 무시하고 초기화를 하지 않는다. ---------------------------- 4 > 함수 표현식, 함수 호출(), 함수 선언문 function book(){ var getBook = function(title){ return "책1"; }; // 여기서 함수 호출 console.log(getBook()); function getBook(){ return "책2"; }; }; book(); ---------------------------- 책1 ---------------------------- *이유 ? 초기화 단계에서 값이 있는 경우에는 무시하고 초기화를 하지 않는다. ---------------------------- 감사합니다.
- 해결됨자바스크립트 중고급: 엔진 핵심
정리 시간
function book(){ function get() { return point; }; var point = 123; return get(); }; console.log(book()); 1. function 키워드를 만나 function 오브젝트를 생성하고 [[Scope]] 를 글로벌 스코프로 설정한다. 2. book() 함수가 호출되어 book() 함수 안으로 들어간다. 3. 실행 컨텍스트를 생성한다. - 위에서 글로벌 스코프로 설정 해둔 [[Scope]]를 외부 렉시컬 환경 참조에 설정한다. - 환경 레코드에 {get : function 오브젝트}, {point:undefined} 로 설정한다. 4. function 키워드에 의해 get function 오브젝트가 생성되고 [[Scope]]에 book 스코프를 설정한다. 5. point 변수에 123 값이 할당 된다. 5. get() 함수가 호출되어 get()으로 들어간다. - 새로운 실행 컨텍스트가 생성된다. - 새로운 실행 컨텍스트의 환경 레코드에서 먼저 찾고 없으면 외부 렉시컬 환경 참조에서 point를 찾는다. - 외부 렉시컬 환경 참조에서 point로 값을 찾고 이것을 리턴한다. 저는 이렇게 이해했는데 제가 이해한게 맞을까요?
- 미해결자바스크립트 중고급: 엔진 핵심
질문 있습니다.
제가 이해한 2가지를 적어보면 아래와 같습니다. 1. 함수가 호출될 때 실행 컨텍스트가 만들어진다. 2. 실행 컨텍스트가 만들어질 때 외부 렉시컬 환경 참조에 설정되는 것은 해당 실행 컨텍스트를 만들고(호출하고) 있는 실행 컨텍스트의 환경 레코드를 설정한다. 예를들어 아래 샘플코드에서는 add(200)이 호출될때 만들어지는 실행 컨텍스트의 외부 렉시컬 환경 참조에는 outer0() 실행 컨텍스트의 환경 레코드{value0:300, add:function, get:function}가 설정 된다. 최종적으로 add(200)의 실행 컨텍스트는 아래와 같다 이게 맞는 설명 인가요? outer0() 실행 컨텍스트 : { 렉시컬 환경 컴포넌트 : { 환경 레코드 : { value0 : 300, add : function, get : function } } } add(200) 실행 컨텍스트 : { 렉시컬 환경 컴포넌트 : { 환경 레코드 : { param : 200 }, 외부 렉시컬 환경 참조 : { // outer0 실행컨텍스트의 환경 레코드를 참조 value0 : 300, add : function, get : function } } } function outer0() { var value0 = 300; function add(param) { value0 += param; }; var get = function() { return value0; } add(200); console.log(get()); }; outer0();
- 미해결자바스크립트 중고급: 엔진 핵심
use strict 없을때는 어떻게 동작하나요?
use strict 없이 var 사용하지 않고 변수 선언하면 identifier resolution은 ES3의 scope chain 방식으로 동작하게 되는건가요? 앞에서 execution context 구조 설명하실때 TBC 에 대해서 나왔는데, TBC에 글로벌오브젝트가 바인딩 되어 있으니까 TBC를 통해서 resolution을 하게 되나요? 그런데 따로 bind 설정을 해버리면 TBC를 이용하는건 안될것 같긴 한데요.
- 미해결자바스크립트 중고급: 엔진 핵심
앞에 분 내용 잘 읽었는데..
제가 앞에 분 내용을 다 읽었는데, 제가 이해한바가 맞는지 확인 부탁드립니다. 함수에서 스코프를 만드는 과정은 호출이 아닌 실행을 해서 처음 function이라는 키워드를 만났을 때 실행되며, 함수를 호출하면 그 때 실행컨텍스트가 만들어져 처음에 만들어진 스코프를 확인한다. 즉, 처음 실행과 호출과의 차이를 알아야한다. 위 내용이 맞나요?
- 미해결자바스크립트 중고급: 엔진 핵심
키노트 다운받는 버튼이나 링크가 보이지 않네요.
키노트 다운받는 버튼이나 링크가 보이지 않네요. 저만그런건가요? 아무리 찾아봐도 찾을 수가 없네요ㅠㅠㅠ
- 해결됨자바스크립트 중고급: 엔진 핵심
안녕하세요! 강사님 - 질문이 생겼습니다.
마지막에 말씀하신오브젝트 > 오브젝트 > 메서드 구조 설명를 듣고제가 자바 언어와 유사하다 생각된 부분을 나름 정리를 해봤습니다.혹시 바람직하지 않은 부분이 보이신다면조언을 구합니다. "아래는 노트필기의 전문 입니다." 오브젝트 가 포함한 오브젝트 - Outer,Inner 클래스 화 자바에서는 class 내부 inner class 가 존재한다.JS 코드의 book.point 오브젝트는 inner class 개념과 일치하는 구조이다. 오브젝트가 오브젝트를 내포하여inner class 형태로 구현이 가능한JS 만의 계층적 표현식이다.자바의 익명클래스 를 계층적으로 구현시키는 형태와비슷하게 파악이 된다. 단, 프로토 타입, 생성자 프로퍼티가 없어서class 처럼 사용하려면,__proto__ 와 constructor 프로퍼티를 생성하여계층구조를 연결 시켜야 하는 불편함이 있다.
- 미해결자바스크립트 중고급: 엔진 핵심
질문 있습니다!
제가 제대로 이해하고 있는지 잘 모르겠지만 궁금한 부분이 있어 질문드립니다. function book(){ var point = 123; function get(){ log(point); }; get(); }; book(); 위의 예제에서 book함수가 호출되고 book함수 안으로 가서 제일 먼저 함수선언문인 get 함수의 function 오브젝트를 생성하는데 이때 get함수의 스코프가 설정된다고 하셨는데 하지만 이 시점에는 book함수 안의 변수들이 정의되기 전인데 어떻게 또는 어떤 정보들이 스코프에 설정 되는지가 궁금합니다.