자바스크립트 함수 선언을 승격시키면 함수 본문도 함께 승격되나요?
PHP中文网
PHP中文网 2017-05-19 10:43:15
0
10
668

자바스크립트 함수선언 승격, 함수본체도 같이 승격되나요?

가 아닌 경우 다음과 같은 반례가 있습니다.

으아아아

인 경우 다음과 같은 반례가 있습니다.

으아아아

첫 번째 예는 함수 본문도 승격된다는 것을 보여줍니다. 이 아이디어를 따라 코드의 두 번째 부분을 이해하면 "이름 바꾸기" 함수가 서로를 다루고 이후의 함수가 이전 함수를 다루므로 콘솔입니다. log(func) 'function func() {console.log('22');};' 문자열이 출력되지만 실제로는 그렇지 않습니다.

세 가지 질문이 발생합니다:

  1. "변수 프로모션, 기능 우선순위"를 어떻게 이해하나요?

  2. 기능 본체도 개선됐나요?

  3. 두 번째 코드의 결과를 어떻게 해석하나요?

PHP中文网
PHP中文网

认证0级讲师

모든 응답(10)
PHPzhong

제가 쓴 글을 읽으시면 모든 내용을 이해하실 것이라 믿습니다. JavaScript 실행 컨텍스트, 함수 스택 및 프로모션의 개념을 깊이 이해하세요

習慣沉默

if는 조건부 판단을 나타냅니다. 컴파일 중에는 코드를 실행해서는 안 되며 구문 및 어휘 분석만 확인합니다. 브라우저를 변경해 보거나, 테스트를 위해 엄격 모드를 활성화해 보세요~

1. 변수 승격, 함수 우선순위, 즉 var a = 1; function fun(){}; 및 function fun(){}이 범위의 최상위 수준으로 승격됩니다.
2. 또한 개선되었습니다. 함수 표현식은 그렇지 않습니다. var fun = function(){}; 이 유형은 var fun을 향상시킬 뿐입니다.
3 두 번째 단락은 실제로 다음과 같이 설명할 수 있습니다

으아악
Peter_Zhu

자세한 소개는 MDN http://kangax.github.io/nfe/#...

을 참조하세요.
某草草

비엄격 모드에서는 if 문 내부에 있는 함수 선언의 승격 여부가 각 커널의 구현에 따라 다릅니다.

결론은 기능이 개선되겠지만 if 문 내부에서 각 코어의 구현 여부에 따라 다릅니다.

엄격 모드는 스크립트나 함수 수준이 아닌 함수 선언을 금지합니다

左手右手慢动作

참조할 수 있는 곳: /q/10...

洪涛

함수 및 변수 선언이 승격됩니다. 함수 승격이 변수 승격보다 우선합니다. 직접 실행되는 코드는 승격될 수 없습니다. 첫 번째 코드는 직접적으로 개선되었습니다. 두 번째 코드에서 정의한 함수는 if 문 구조에 있습니다. 두 개의 로그와 if는 실행 중인 스택에서 순서대로 실행되어야 합니다. 분명히 if 문이 실행되기 전에 func가 선언되지 않았습니다.

刘奇

es6에는 몇 가지 블록 수준 범위 규칙이 있습니다. 이전 버전의 노드 또는 낮은 버전의 Chrome에서 실행하면 다음 코드와 동일합니다
으아악

그러나 상위 버전의 노드 및 크롬에서는 이러한 변수의 개선이 제한되어 코드 상황이 발생하게 됩니다! ~! ~

仅有的幸福

JavaScript는 함수 수준 범위이기 때문입니다(function-level scope
所以if中并没有独立维护一个scope

영어 설명:
javascript-variable-scope-and-hoisting-explained
중국어 설명: Javascript 범위 및 변수 호이스팅

洪涛

일반적으로 조건문에 함수 선언을 작성하는 것은 권장되지 않습니다.
이것은 ECMAScript의 잘못된 구문이며 JavaScript 엔진은 오류를 수정하고 정상적이고 합리적인 상태로 변환하려고 시도합니다. 하지만 이 수정 방법은 브라우저마다 다릅니다. 함수 표현식을 사용하는 것이 좋습니다:
var func;
if(true){

으아악

}그밖에{

으아악

}

phpcn_u1582

http://blog.csdn.net/qq673318...
링크에 설명 있음
————포터

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!