Lshah
2016-03-23 10:46
为什么调用的时候是(sortNum) 不是(sortNum())呢?为什么(sortNum())不行呢?
不加()是指针;
函数只要是要调用它进行执行的,都必须加括号。此时,函数()实际上等于函数的返回值。当然,有些没有返回值,但已经执行了函数体内的行为,这个是根本,就是说,只要加括号的,就代表将会执行函数体代码。
不加括号的,都是把函数名称作为函数的指针,用于传参,此时不是得到函数的结果,因为不会运行函数体代码。它只是传递了函数体所在的地址位置,在需要的时候好找到函数体去执行。
参考http://www.zhihu.com/question/31044040
我也不是很懂,函数名是函数的引用地址,不加()应该相当于这里的参数是整个函数,加上()表示执行函数,即 sort(sortNum())等于sort(b-a);这应该就是区别了,我们先记住这么用,等后面能力强了,再回来看,就迎刃而解了。我想应该是我们不清楚sort()方法具体的排序机制,加油。
写法不同:
1,setTimeout(sortNum,1000);
2,setTimeout("sortNum()",1000);
假如,传“sortNum()”,那么为什么不传参数呢?应该要sortNum(a,b)才对。但是,很明显排序的参数就是数组里面的元素。所以,我推断:参数是默认传进去的。那就可以省略参数,相应的()也就可以省略了。
JavaScript进阶篇
468781 学习 · 22507 问题
相似问题