js function undefined

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)


MMMHUHU
浏览 652回答 1
1回答

慕桂英546537

setTimeout()第一个参数为一个函数,而你定了setTimeout(function(func){},1000); 此时,func 是 setTimeout中的第一个函数参数的形参,已经不是a的形参了。因此无法访问 func 是正确的。也就是说当前作用域中,func 就是一个没有赋值的形参,所以是undefined.在该匿名函数的作用域链中,首先是匿名函数的 func ,然后是 a 的 func 。因此下面的示例,在当前作用域找不到func的时候,去作用域链中寻找,a 的 func 会被找到。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript