사용해야하는 이유는 다음과 같습니다 function
.
신호는 명확하고 간결합니다. 이것은 다른 답변에 나와있는 최첨단 호이 스팅 문제보다 훨씬 유리합니다.
아래 코드에서 볼 수 있듯이 자동 const
으로 tryDoTheThing
실패 선언이 호출되고 호출을 시도 할 때까지 포착되지 않기 때문에 실제로 모듈 내에서 호이 스팅을 원합니다 .
내가 접촉 한 대부분의 주니어는 const
탭 위에 공백을 사용하거나 functional!!!
"OOP가 잘못 되었기 때문에 모든 것을 만드는 것과 같이 유행이기 때문에 모든 기능을 선언 하는 데 사용 하기 시작 합니다. 하지마 당신은 그 의미를 완전히 이해하지 않고 유행을 따르는 그 사람이되고 싶지 않습니다.
https://gist.github.com/stephenjfox/fec4c72c7f6ae254f31407295dc72074 통해
/*
This shows that, because of block-scoping, const function references must be
invoked in-order or else things will fail silently.
const's are added the name space serially (in the order in which they appear)
and much of the body isn't declared when we first try to invoke or functions
*/
const tryDoTheThing = () => {
console.log(`This is me trying to be awesome ${getAwesome()}`)
}
// "getAwesome is not defined", because it is referenced too early
tryDoTheThing() // comment to see the rest work
const getAwesome = () => (+((Math.random() * 10000).toString().split('.')[0]))
const doTheThing = () => {
console.log(`This is awesome! ${getAwesome()}`)
}
doTheThing() // prints
vs
/*
Function declarations are given two passes, where the first lifts them to
the top of the namespace, allowing "out of order" usage
*/
doTheThing();
function doTheThing() {
console.log(`This is awesome number ${getAwesome()}`)
}
function getAwesome() {
return (+((Math.random() * 10000).toString().split('.')[0]))
}