이 글은 js 기반의 변수 승격과 함수 승격에 대한 글을 가져왔습니다(자세한 설명). 에디터가 꽤 좋다고 생각해서 지금 공유해서 참고용으로 올려보겠습니다. 편집자를 따라 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.
1. 변수 승격
ES6 이전에는 JavaScript에 블록 수준 범위가 없었고(중괄호 {} 쌍은 블록 수준 범위임) 전역 범위와 함수 범위만 있었습니다. 변수 호이스팅은 변수 선언을 해당 범위의 시작 부분으로 호이스팅합니다.
마지막 이력서의 예는 다음과 같습니다.
console.log(global); // undefined var global = 'global'; console.log(global); // global function fn () { console.log(a); // undefined var a = 'aaa'; console.log(a); // aaa } fn();
위의 인쇄 결과가 나오는 이유는 js의 변수 승격 때문입니다. 실제로 위 코드는 다음과 같이 실행됩니다.
var global; // 变量提升,全局作用域范围内,此时只是声明,并没有赋值 console.log(global); // undefined global = 'global'; // 此时才赋值 console.log(global); // 打印出global function fn () { var a; // 变量提升,函数作用域范围内 console.log(a); a = 'aaa'; console.log(a); } fn();
2. 함수 개선
js에서 함수를 만드는 방법에는 함수 선언과 함수 리터럴 두 가지가 있습니다. 함수 호이스팅은 함수 선언에만 존재합니다! 예:
console.log(f1); // function f1() {} console.log(f2); // undefined function f1() {} var f2 = function() {}
위의 인쇄 결과가 나오는 유일한 이유는 js의 함수 승격으로 인해 코드가 실제로 다음과 같이 실행되기 때문입니다.
function f1() {} // 函数提升,整个代码块提升到文件的最开始<br>console.log(f1); console.log(f2); var f2 = function() {}
결론: 기본적으로 이것이 필요합니다. 능숙해지려면 더 많은 연습을 할 수 있습니다. 테스트:
console.log(f1()); console.log(f2); function f1() {console.log('aa')} var f2 = function() {}
(function() { console.log(a); a = 'aaa'; var a = 'bbb'; console.log(a); })();
관련 권장 사항:
js 변수 승격에 대한 자세한 설명 및 함수 선언 사전 구문 분석 예제
위 내용은 js의 변수 승격 및 함수 승격에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!