if
在语句中提升 javascript 函数是怎么回事?js只是不这样做吗?以下代码在浏览器中运行时运行良好。它会在两秒钟后发出“嘿”的警报。
<script>
setTimeout(hey,2000)
function hey(){
alert('hey')
}
</script>
但是围绕这个添加一个琐碎的if
声明:
<script>
if(true){
setTimeout(hey,2000)
function hey(){
alert('hey')
}
}
</script>
突然它抱怨说hey is not defined
。
现在,如果您将回调从 更改hey
为function(){hey()}
,如下所示:
<script>
if(true){
setTimeout(function(){hey()},2000)
function hey(){
alert('hey')
}
}
</script>
然后它再次开始工作,即使使用 if 语句。发生什么了?