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

js function undefined

js function undefined

MMMHUHU 2018-12-20 18:19:57
function a(func){    setTimeout(function(func){        console.log('a')        console.log(typeof(func))        func()    }, 1000)}a(b)为什么这个func是undefined,而下面的可以function a(func){    setTimeout(function(){        console.log('a')        func()    }, 1000)}a(b)
查看完整描述

1 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

setTimeout()第一个参数为一个函数,

而你定了setTimeout(function(func){},1000); 此时,func 是 setTimeout中的第一个函数参数的形参,已经不是a的形参了。因此无法访问 func 是正确的。

也就是说当前作用域中,func 就是一个没有赋值的形参,所以是undefined.

在该匿名函数的作用域链中,首先是匿名函数的 func ,然后是 a 的 func 。因此下面的示例,在当前作用域找不到func的时候,去作用域链中寻找,a 的 func 会被找到。


查看完整回答
反对 回复 2019-01-27
  • 1 回答
  • 0 关注
  • 651 浏览
慕课专栏
更多

添加回答

举报

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