You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中为何可在函数定义前调用函数?

为什么能在函数定义前调用它?

这是JavaScript的**函数提升(Hoisting)**特性导致的。

JS引擎在执行代码前,会先扫描当前作用域,把所有用function关键字声明的函数整个“拎”到作用域顶部。也就是说,你第一段代码的执行顺序,在JS眼里其实和第二段完全一致——函数定义被提前了,调用自然不会出错。

举个直观的例子,你写的:

doSomething();

function doSomething(){
    console.log("Hello World");
}

JS引擎实际处理后会变成:

function doSomething(){
    console.log("Hello World");
}

doSomething();

不过要注意,只有函数声明(function 函数名(){...}这种写法)才有这个提升效果。如果是函数表达式,比如:

doSomething(); // 这里会直接报错
const doSomething = function(){
    console.log("Hello World");
}

这种情况变量doSomething的声明会被提升,但赋值的函数体不会,调用时它还是undefined,自然会报错。

至于有人喜欢把调用写在定义前面,大多是个人编码习惯——比如想让读者先看到代码的核心执行逻辑,再去看具体实现细节。只要是函数声明,两种写法的执行结果没区别。

内容的提问来源于stack exchange,提问作者New Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:25:36