黑马程序员技术交流社区

标题: JavaScript调用函数 [打印本页]

作者: 徐传任    时间: 2012-10-1 20:50
标题: JavaScript调用函数
在javaScript中怎么有时调用自己写的函数要加括号,有时不加括号;
关于这个有没什么技巧了?


作者: 许庭洲    时间: 2012-10-4 13:06
1. 不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。
2.函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。

作者: 秦敖    时间: 2012-10-5 14:13
为楼上补上一个小例子吧。
<script>
        function Myfun()
        {
                alert("this is Myfun");
                return "My retrun";
        }
        function OhMyfun()
        {}
        Myfun();//执行Myfun函数
        ohMyfun=Myfun;//将ohMyfun定义内容赋值给Myfun,ohMyfun和Myfun定义内容相同。
        alert(ohMyfun);//将ohMyfun输出发现就是Myfun函数定义内容;
        ohMyfun();//执行ohMyfun函数
        alert(ohMyfun=Myfun());//执行Myfun函数,并将返回值赋值给ohMyfun
        alert(ohMyfun);//ohMyfun的内容变成了"My retrun"
</script>
通过上述小例子我们等到如下结果:1.函数的函数名可以当作一个变量使用,函数名中存储了函数定义的字符串。
                                  比如alert(alert),alert(Myfun)等显示的都是函数定义的字符串。
                                2.函数名加括号就会执行该函数。Myfun()就会执行Myfun函数。
作者: 秦敖    时间: 2012-10-5 14:13
同时我对“不加括号的,都是把函数名称作为函数的指针”有疑问。
<script>
        function Myfun()
        {
                alert("this is Myfun");
        }
        function Myfun1()
        {
                alert("oh Baby Baby!");
        }
        function ohMyfun()
        {}
        ohMyfun=Myfun;
        alert(ohMyfun);
        Myfun=Myfun1;
        alert(ohMyfun);
        //ohMyfun的内容不会随Myfun的改变而改变
</script>




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2