亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么函數后面不能加()

為什么調用的時候是(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
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號