js 函数定义的两种方式以及事件绑定(扫盲)
Posted 学无止境
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 函数定义的两种方式以及事件绑定(扫盲)相关的知识,希望对你有一定的参考价值。
一、事件(例如:onclick)绑定的函数定义放在jsp前面和放后面没影响
二、
1 $(function() { 2 function func(){}; 3 })
onclick通过如下方式绑定事件到jsp中:onclick = "func();"
由于func()在函数中声明,是局部变量,onclick找不到func(),绑定失败。
三、
function func(){};
onclick = "func();"
这样绑定没有问题,因为func()此时是全局变量,不在任何函数中。
四、
func = function(){ }; onclick = "func();"
这样绑定也没问题,另一种函数定义方式,也不在任何函数中,属于全局变量。
五、
$(function() { func = function(){ }; }); onclick = "func();"
这可以绑定成功,js中,在函数内部,不加var声明的变量是属于全局变量,所以这里func虽然放在函数中,却是全局变量,onclick可以正常触发。
六、
$(function { var func = function() { }; }); onclick = "func();"
这绑定不成功,可以和情况五比较,func变量前加了var,变成了函数内部的局部变量,所以onclick访问不到func函数,不能触发。
七、全局和局部变量:
1、外部的为全局,内部的为局部变量。
2、加var为局部变量(在方法内),不加var为全局变量(当方法内有一次使用后)
<script type="text/javascript"> var golbe="global"; test(); function test(){ var local="local"; document.write(golbe); document.write(local); } document.write(golbe); document.write(local); </script>
在上面的test方法内,当把local变量的var去掉后,local就变成了全局变量,但是在局部不使用local,则这个local作为全局是无效的。
为了验证这点,我把test方法内部唯一使用local变量的这句代码注释掉.发现在外部也打印不出来了。
总结:全局变量可以不声明var 函数内变量必须声明var,在定义全局变量时加或不加var关键字没什么影响;但在定义局部变量时如果不加var关键字javascript解释程序会将其解释为全局变量。
以上是关于js 函数定义的两种方式以及事件绑定(扫盲)的主要内容,如果未能解决你的问题,请参考以下文章