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

来源:7-22 数组排序sort()

Lshah

2016-03-23 10:46

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

写回答 关注

4回答

  • hello_zore
    2016-04-30 14:40:16

    不加()是指针;

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

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

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

  • 深山小童
    2016-03-28 17:07:07

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

    Lshah

    好的一起加油啊~~

    2016-03-28 17:51:20

    共 1 条回复 >

  • 纪行川
    2016-03-23 11:54:55

    写法不同:

    1,setTimeout(sortNum,1000);

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


    Lshah

    不是吧 函数不用加引号吧 而且我试了还是不行啊,不管怎么说,还是谢谢你能回答我的问题

    2016-03-23 14:16:20

    共 1 条回复 >

  • OnlySee
    2016-03-23 11:49:01

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

    Lshah 回复OnlySe...

    哦 谢谢你

    2016-03-23 15:50:16

    共 5 条回复 >

JavaScript进阶篇

本课程从如何插入JS代码开始,带您进入网页动态交互世界

468781 学习 · 22507 问题

查看课程

相似问题