이 글은 JavaScript 함수 선언과 변수 선언의 차이점에 대한 분석을 제공합니다. 특정 참조 값이 있으므로 도움이 필요한 친구에게 도움이 되기를 바랍니다.
오늘 또 다른 질문으로 저와 JS의 기본 사이에 싸움이 촉발되었습니다. 우선
var getName = function(){alert(1)}; function getName(){alert(2)}; getName();// 1
or
function getName(){alert(2)}; var getName = function(){alert(1)}; getName();// 1
선언 순서를 왜 바꿨는데 결과는 여전히 형식으로 선언되었나요? var
함수의 값? var
形式声明的函数的值?
有人回答我说 "啊,变量提升呀...",我最开始的理解,就算变量提升,第一种情况提升之后,应该是这样啊:
var getName; getName = function(){alert(1)}; function getName(){alert(2)};
最后应该输出 2 才对啊(很理直气壮)。
殊不知不只有var
声明才会提前,以function fn(){}
누군가가 "아 변수가 늘었구나..."라고 하더군요. 제가 처음 이해한은 변수가 늘어났다고 해도 첫 번째 상황이 늘어난 이후에는 이렇게 되어야 한다는 것입니다.
fn();//Uncaught TypeError: fn is not a function var fn = function(){console.log(1)};The 최종 출력은 2가 되어야 합니다. 그렇죠?(매우 확신합니다) 모두가 알고 있듯이
var
선언이 발전할 뿐만 아니라, function fn(){}
형식으로 선언된 함수도 스코프most
로 승격됩니다. 상단, 변수 승격 순입니다. 자세한 내용은 다음 예시를 참고하세요.
fn();//2 var fn = function(){console.log(1)}; function fn(){console.log(2)}
but
rrreee
위 내용은 JavaScript 함수 선언과 변수 선언의 차이점 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!