课程
/前端开发
/JavaScript
/JavaScript进阶篇
为什么调用的时候是(sortNum) 不是(sortNum())呢?为什么(sortNum())不行呢?
2016-03-23
源自:JavaScript进阶篇 7-22
正在回答
不加()是指针;
函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。
不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。
参考http://www.zhihu.com/question/31044040
我也不是很懂,函数名是函数的引用地址,不加()应该相当于这里的参数是整个函数,加上()表示执行函数,即 sort(sortNum())等于sort(b-a);这应该就是区别了,我们先记住这么用,等后面能力强了,再回来看,就迎刃而解了。我想应该是我们不清楚sort()方法具体的排序机制,加油。
Lshah 提问者
写法不同:
1,setTimeout(sortNum,1000);
2,setTimeout("sortNum()",1000);
假如,传“sortNum()”,那么为什么不传参数呢?应该要sortNum(a,b)才对。但是,很明显排序的参数就是数组里面的元素。所以,我推断:参数是默认传进去的。那就可以省略参数,相应的()也就可以省略了。
OnlySee 回复 Lshah 提问者
Lshah 提问者 回复 OnlySee
举报
本课程从如何插入JS代码开始,带您进入网页动态交互世界
4 回答为什么onclick=后面接一个函数必须加引号
2 回答调用函数括号后面加不加分号
3 回答为什么我的添加项目函数不能实现添加项目功能
2 回答函数合并后为什么不能正常运行了?
3 回答为什么不能直接写函数名调用函数?
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号