초보자 자바스크립트 엔진 호출 방법을 이해하고 코딩하는 메모
2618 단어 자바스크립트ECMAScript
처음에
js 디버깅
하고 있다는 것을 알지만
옛날부터 컨텍스트 스위치
라고 하는 것이 있어, 이것은, 실행하고 있는 프로세스를 버려 두고, 필요하게 되었을 때 내어 와 계속한 처리를 정상적으로 움직여 놓는 것.
js로 말하면
예를 들어, 스파이더 원숭이라든지 V8과 같은 엔진이 변수 등의 초기화시, 그 실행 컨텍스트의 객체에 변수나 함수의 초기화된 것 등을 버린다.
다만, 여기에서 주의해 두고 싶은 것이, 변수·함수의 선언·초기화 처리는 실시하지만, 함수안에 존재하는 로컬 변수에 관해서는 선언에 머물러, 초기화까지는 실시하지 않는다고 하는 것. 당연한 이야기지만, 이해하고 쓰지 않았다고 생각하지 않는
undefined
를 일으킬 가능성이 있다.샘플 코드를 작성해 보았다.
magic라는 숨겨진 맛을 믹스한 것을 낳는 코드입니다. 내용은 아무래도 좋지만
function make(val) {
var name = name,
magic = '∞';
function mixin() {
console.log(magic + name);
}
mixin();
}
make('ジュース');
make 함수에 중단 점을 넣어 보면
코드가 실행될 때까지는 make 함수 안에 있는 name,magic 과 같은 변수는 초기화되지 않고
undefined
된다. mixin의 범위의 클로저로서도 아직 초기화는 되지 않고그런 다음 make 함수에 스텝 인하면
name,magic 변수가 초기화되고 각 값이 할당됩니다. 클로저로도 값이 들어있다.
이 후에는 계속 VM 안에 들어가서 console이 불려 name과 magic의 합한 문자가 출력된다
뭐 이 녀석 당연한 말을 하고 있어, 되어 있을지도 모릅니다만. 글쎄, 그래, 정말 당연한 이야기.
실제로 함수가 불릴 때까지는 함수내에 있는 변수는 초기화되어 있지 않아, 라고 하는 초초심자 전용의 기사이므로. 서버 사이드 중심에 하고 있고, 버그 없는 정도로 일단 JS의 움직임 알고 이렇게 사람을 위한 기사입니다.
Reference
이 문제에 관하여(초보자 자바스크립트 엔진 호출 방법을 이해하고 코딩하는 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/pollseed/items/920307fd05f10e69001c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)