>웹 프론트엔드 >JS 튜토리얼 >JavaScript 함수 선언과 변수 선언의 차이점 분석

JavaScript 함수 선언과 변수 선언의 차이점 분석

不言
不言원래의
2018-09-11 15:14:341502검색

이 글은 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 변수 선언 예 analyze_javascript 기술

🎜🎜🎜JavaScript 전역 변수 선언 및 장점과 단점 소개🎜🎜🎜🎜

위 내용은 JavaScript 함수 선언과 변수 선언의 차이점 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.