다음 코드는 일부 버전의 Firefox에서 Firefox - linksHandle is not defined
로 오류를 발생 시켰습니다.폐쇄 및 기능 호이 스팅 - 파이어 폭스에서 작동하지 않음
코드는 아래쪽에 linksHandle이라는 함수가있는 함수로 구성됩니다. 내가 아는 한이 함수는 정의 된 함수가 호출 될 때이 함수를 끌어 올리도록되어 있습니다.
따라서 'mMenuReady'이벤트에 대해 정의 된 함수는 실행 컨텍스트에 정의 된 모든 함수와 변수를 포함하므로 해당 함수에 액세스 할 수 있어야합니다.
왜 함수를 둘러싸 기 위해 'mmenu'콜백을 사용하기 위해 일부 firefox 버전에서 함수 선언 (linksHandle)을 정의해야합니까?
document.addEventListener('readystatechange', function() {
if (document.readyState === 'interactive') {
if (typeof jQuery === 'function') {
// callback function that is invoked later by the event that is triggered -> $(window).trigger("mMenuReady")
$(window).on('mMenuReady', function() {
var links2 = Array.prototype.slice.call(document.querySelectorAll('#mm-mainMenu a'));
links2.forEach(linksHandle);
});
}
function linksHandle(elem) {
// function code
}
}
});
코드가 if 블록 안에 없으면 함수에서 바로 제거되었습니다. ES6에 내장 된 내부 기능 이었습니까? 내 질문에 if 문이 함수의 권상에 영향을 미칩니 까? – user3021621
예, 함수 수준 함수 선언은 함수 수준 범위에서 끌어 올립니다. – Bergi
더 진보 된 ES에서 함수는 if 블록에서도 끌어 올 수 있습니까? – user3021621