函数声明提前的小问题

var get = function () {
    console.log("get1");
}
function get() {
    console.log("get2");
}
get()

//输出get1
这里为什么输出get1

阅读 2.3k
4 个回答

我的理解应该是这样,希望能对你有所帮助:

var get; //变量声明提升
function get() {  //函数声明提升到顶部
    console.log("get2");
}
get = function () { //变量赋值依然保留在原来的位置
    console.log("get1");
}
get();  //最终输出:get1

由于函数提升和变量提升,执行的代码是这样的。

function get() {
    console.log("get2");
}
var get;
get = function () {
    console.log("get1");
}
get();

函数提升比变量提升优先级高,第一个函数声明被第二个同名函数表达式覆盖了, 所以打印get1.

给楼上补充一下,

声明提前发生在代码实际执行之前

不知道是否有助于题主理解

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题