函数和变量同名,应该函数会置顶,为什么one()打印出的是1?

请问,函数和变量同名,应该函数会置顶,为什么one()打印出的是1?

    var one=function(){console.log(1)}
    function one(){console.log(2)}
    one()
阅读 2.1k
3 个回答

http://blog.csdn.net/chy555ch...

  • 变量声明会被顶置,函数声明也会被顶置且比变量更先声明。
    所以变量声明会覆盖函数声明

这样运行结果也是 1
clipboard.png

首先,你需要知道

var one=function(){console.log(1)}
function one(){console.log(2)}

这两种方式定义函数的区别,var one=function(){console.log(1)}(函数表达式),function one(){console.log(2)}(函数声明),两种方式都会提升变量,var one=function(){console.log(1)}会把one这个变量提升,function one(){console.log(2)}会把one()函数提升,相当于

one
one()
var one=function(){console.log(1)}
function one(){console.log(2)}
//调用one()

又因为代码在默认情况下执行顺序由上到下,当调用one()函数时候,当前打印1了。

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