javaScript函数使用括号的区别

来源:互联网 发布:图像修复软件 编辑:程序博客网 时间:2024/05/17 13:14

一、javascript引用函数的时候加不加括号的区别

在javascript中如果需要给一个元素attach一个event,那么我们可以这么写:

1. document.getElementByIdx_x('myid').onclick = function(event){};
2. document.getElementByIdx_x('myid').onclick = myFunc;
3. document.getElementByIdx_x('myid').onclick = myFunc();
4. function myFunc(event){};

那么上面的三种写法对吗?通过执行就会发现第3种写法有问题。第1种方法是以匿名函数的方式直接赋值,关键在于第2和第3的区别,也就是带与不带括号的区别,如果带上括号是对函数的调用,得到的是其返回值;如果不带括号代表的是对函数本身的引用,所以区别非常大。同时顺便说一下第4行定义的函数虽然在后,但是会被解释器将其作用域提升到js最高的作用域之内,所以并不影响前面的语句对其的引用。


二、javascript匿名函数结尾处圆括号含义

eg:  var a = function(p1,p2){alert(p1+p2);}(1,2);

       (function(p1,p2){alert(p1+p2);})(1,2);

这种写法可以看做是私有的内部类,一般出于加载时就需要立即执行的代码可以这样来些,再就是避免与其它的名称相冲突.

相当于:

       function test(p1,p2){ alert(p1+p2); }

       test(1,2);

匿名方法的好处:
1.其它外部调用不到,相对安全.
2.可用于onload事件保证不与其冲突.
3.可看做线程安全.


原创粉丝点击