Es6函数声明的问题

我理解的是当函数调用的时候,会从这个自调用函数内寻找函数f,找不到的时候,就会去全局找,为什么找不到呢?在if(){}作用域中声明了一下,书上说是这个函数声明提升到了这个自调用函数内的头部了吗?if false我理解的是进不去,怎么会有提升呢?

假假爱看书的人
浏览 2088回答 3
3回答

慕勒7123956

1 首先要明白函数表达式和函数声明的区别,函数声明是会被提升到作用域最上面的,即使是在if里面,这是js的自身问题,2.下面那个为什么正常运行我就不清楚了,因为不是一个标准的立即执行表达式,如果换成标准的,依然是typeerror

小小的脾气古怪

这个是和ES6中全局变量挂钩的吧,function f(){}声明的不是在window下面,所以在调用f()方法的时候显示未定义,楼上使用var 定义了全局的方法是可以的。

ChiuMungZit_HK

var f = function() { console.log("outside") } (function() {   if (false) {     function f() { console.log("inside") }   }   f() })这样写就可以,研究中……
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript