
都可以弹出alert,但是上面那个在控制台输出了undefined,是怎么回事?
-----update-----
多谢大家的耐心解答,起初我的疑惑就是foo这个对象定义的先后顺序问题,因为使用非hoisted的函数定义方式在chrome的控制台中仍然可以正常运行而没有报TypeError。后来我新建文件之后再测试是完全没问题的。所以这里导致困惑的主要就是chrome对undefined输出的解释了。再次感谢@BetaRabbit
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
所有声明变量或声明函数都会被提升到当前函数的顶部。MDN链接地址
变量foo提升到顶部
等价为==>
会执行报错
TypeError: foo is not a function. (In 'foo()', 'foo' is undefined)你说的执行输出了undefined,要看下之前的代码是什么样的!
是不是之前已经定义过foo函数了
而对于
函数foo声明提升到顶部
等价为
执行正常~~~
变量定义提升与函数声明提升
用
function关键字声明的函数,会有一个函数声明提升的过程,所以你可以在声明函数之前进行调用。如果使用函数表达式来定义函数,只能在定义之后来调用,原因在于会存在一个变量声明提升。