为了账号安全,请及时绑定邮箱和手机立即绑定

为什么函数后面不能加()

为什么调用的时候是(sortNum) 不是(sortNum())呢?为什么(sortNum())不行呢?

正在回答

4 回答

不加()是指针;

函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。

不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。

参考http://www.zhihu.com/question/31044040

0 回复 有任何疑惑可以回复我~

我也不是很懂,函数名是函数的引用地址,不加()应该相当于这里的参数是整个函数,加上()表示执行函数,即 sort(sortNum())等于sort(b-a);这应该就是区别了,我们先记住这么用,等后面能力强了,再回来看,就迎刃而解了。我想应该是我们不清楚sort()方法具体的排序机制,加油。

0 回复 有任何疑惑可以回复我~
#1

Lshah 提问者

好的一起加油啊~~
2016-03-28 回复 有任何疑惑可以回复我~

写法不同:

1,setTimeout(sortNum,1000);

2,setTimeout("sortNum()",1000);


0 回复 有任何疑惑可以回复我~
#1

Lshah 提问者

不是吧 函数不用加引号吧 而且我试了还是不行啊,不管怎么说,还是谢谢你能回答我的问题
2016-03-23 回复 有任何疑惑可以回复我~

假如,传“sortNum()”,那么为什么不传参数呢?应该要sortNum(a,b)才对。但是,很明显排序的参数就是数组里面的元素。所以,我推断:参数是默认传进去的。那就可以省略参数,相应的()也就可以省略了。

0 回复 有任何疑惑可以回复我~
#1

Lshah 提问者

那不省为什么就不行呢
2016-03-23 回复 有任何疑惑可以回复我~
#2

OnlySee 回复 Lshah 提问者

这个分析也是我的猜测而已。这属于程序设计的规定,记住就好了。当然,规定传"sortNum()"也行。这个不是绝对的,看程序怎么设计吧。 对此种设计,我是这么看的。先说,这是个人看法,不一定对。带有()代表的是方法本身。"sortNum"代表着你要调用的方法叫什么。也就是说:sortNum(a,b)这个方法叫做“sortNum“。你只有传”sortNum“程序才认。你可以把这个当做一个规定记住就好了。 无视我的回答吧。
2016-03-23 回复 有任何疑惑可以回复我~
#3

Lshah 提问者 回复 OnlySee

但是我不知道在什么情况下用有括号的什么情况下不用
2016-03-23 回复 有任何疑惑可以回复我~
#4

OnlySee 回复 Lshah 提问者

程序都是调出来的。你可以两个都试一下
2016-03-23 回复 有任何疑惑可以回复我~
#5

Lshah 提问者 回复 OnlySee

哦 谢谢你
2016-03-23 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消

为什么函数后面不能加()

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号