函数提升的疑惑

function text () {
    conssole.log(1)
}
console.log(text());会打印出2,为什么不是1

function text () {
    conssole.log(2)
}
阅读 2.5k
4 个回答

打出来的是 2 和 undefined 把
2 是 第二个text()执行;
undefined 是因为 text()没有返回值
函数提升,这段代码等价于:

function text () {
    console.log(1);
}
function text () {
    console.log(2);
}
console.log(text());

函数按顺序进行提升,后者覆盖了前者

额 你既然都说了是函数提升了 所以会打印出2。。

js的函数声明方式会自动提升,你上面的写法其实就是

function text(){
    console.log(1)
}
function text(){
    console.log(2)
}
console.log(text())

function 是一等公民!编译阶段,会把定义式的函数优先执行.

对于JS解释器来说,在运行阶段之前,世界里只有一个叫text的函数,也就是后者(打印2的那个)

函数提升,然后重写text

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