正在回答
同学你好!
(1)注意:第一次回复中,变量isSetAnimateClass是相对于oclick是全局的,所以说不是点击之后释放。
(2)关于同命变量,k是不同的局部作用域,不同的局部作用域下同名变量就可以区分了(可以在for循环中打印k看下)
如果帮助到了你 欢迎采纳 祝学习愉快~
也就是说 因为2处是在函数里面,所以他可以引用1处函数定义的变量,即使他在引用的时候(也就是我点击的时候),此函数已经执行结束了,但是因为他在函数里面,所以他可以引用???
而3处是在函数外面了,所以不能引用函数定义的变量了.
然后我们回到课堂的代码:
如果我上述的想法是对的,那么2处自然可以引用1处的变量了,尽管2处是在一个事件句柄的内部函数里面,但是他还是在这个setScreenAnimate大函数里面,所以可以引用.
那么我说的关于混淆变量是这样:
因为这里循环调用函数,那么就会声明很多名称一样的变量了,如下:
因为我在点击HTML元素的时候,我发现所有的元素都是可以正确响应的,也就是事件句柄函数中引用的变量都是存在的:
所以他们是怎么区分这些同名变量的呢?
_________________________________________________________________________________________________
这个问题是否已经牵涉到深一点的知识了呢??
包括自己以前学习java等其他语言的时候,对这种函数里面嵌套匿名内部函数的变量作用域也是有点晕...
同学你好!
(1)没有被释放,因为是全局中的变量,并且子函数中还在使用
(2)同学写的这段代码是因为a标签默认有跳转功能,可以给a标签添加javascript:;来阻止跳转:
即可打印出data的值
(3)不推荐相同的变量名,即使是局部变量,容易混淆,如果哪里无法区分,建议打印查看
(4)第一段代码中,data是test函数中的局部变量,外部是访问不到,所以没有输出
第二段代码中,点击了div之后打印的是test函数中的data
同在test一个局部中因此可以访问到data
建议同学不要往释放方面思考,其实通俗讲就是局部,全局作用域的问题,没有那么复杂哦
如果帮助到了你 欢迎采纳 祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星