A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐传任 中级黑马   /  2012-10-1 20:50  /  1427 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在javaScript中怎么有时调用自己写的函数要加括号,有时不加括号;
关于这个有没什么技巧了?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
1. 不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。
2.函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。
回复 使用道具 举报
为楼上补上一个小例子吧。
<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函数。
回复 使用道具 举报
同时我对“不加括号的,都是把函数名称作为函数的指针”有疑问。
<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>

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马