为了账号安全,请及时绑定邮箱和手机立即绑定

Es6函数声明的问题

Es6函数声明的问题

假假爱看书的人 2017-12-19 23:55:11
我理解的是当函数调用的时候,会从这个自调用函数内寻找函数f,找不到的时候,就会去全局找,为什么找不到呢?在if(){}作用域中声明了一下,书上说是这个函数声明提升到了这个自调用函数内的头部了吗?if false我理解的是进不去,怎么会有提升呢?
查看完整描述

3 回答

?
慕勒7123956

TA贡献35条经验 获得超15个赞

1 首先要明白函数表达式和函数声明的区别,函数声明是会被提升到作用域最上面的,即使是在if里面,这是js的自身问题,

2.下面那个为什么正常运行我就不清楚了,因为不是一个标准的立即执行表达式,如果换成标准的,依然是typeerror

查看完整回答
反对 回复 2017-12-20
?
小小的脾气古怪

TA贡献7条经验 获得超4个赞

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

查看完整回答
反对 回复 2017-12-20
?
ChiuMungZit_HK

TA贡献8条经验 获得超443个赞

var f = function() { console.log("outside") }

(function() {
  if (false) {
    function f() { console.log("inside") }
  }
  f()
})

这样写就可以,研究中……

查看完整回答
反对 回复 2017-12-20
  • 3 回答
  • 0 关注
  • 1983 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信