作用域新问题

原创 燕子666 随笔 小程序实例 260阅读 2017-06-24 12:11:55 举报

关于作用域中的e传播问题html 代码

30行报错我懂,是因为上级作用域是window,全局中没有num所以会报错,但是27行和29行两次输出e为什么结果不同,而且我的24行fn执行的时候,里面也没有没有传参数呢,为什么,求解……

评论 ( 3 )
最新评论
燕子666 1F 2017-06-24 19:51:08 3F

我知道为什么了,google是既可以识别e也可以识别window.event的,28行的 e = e || event; 它直接给e赋值的是window.event; fn()中的event向上级作用域(window)查找,就可以找到window.event

燕子666 1F 2017-06-24 17:42:14 2F

它是如何访问到onclick里面的e的,为什么num得不到onclick里面的num的值? 为什么写了e= e || event;以后他就能访问到onclick里面的e了呢??? function fn()的上级作用域应该是window,不是onclick的作用域呀

ls1210485244 2017-06-24 14:33:26 1F

函数作用域链的问题 function (e) {}
这里相当于在这个函数作用域中声明了一个变量 因为你在调用fn的时候没有传值进来 所以第一次console.log出来是undefined
然后你又执行了e = e || event 这时候在上一级的函数作用于里面有变量e 所以就把它赋值给fn里的e了 自然可以打印出来