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

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

sortNum(a,b)這個函數使用的時候不應該傳參嗎?

<script?type="text/javascript">
??function?sortNum(a,b)?{
??return?a?-?b;
?//升序,如降序,把“a?-?b”該成“b?-?a”
}
?var?myarr?=?new?Array("80","16","50","6","100","1");
??document.write(myarr?+?"<br>");
??document.write(myarr.sort(sortNum));
</script>

不懂這個函數的意思,前面有人解釋a,b可以理解為數組下標,可是下標怎么能體現數組的值呢

正在回答

5 回答

sortNum()被傳進去的時候其實是以“函數指針”的方式傳進去的,因為在JS里面,函數也被當作對象處理,所以也是可以被當作參數傳遞的。也就是你傳遞了一個函數對象給array.sort()。

我覺得你想問的是既然沒有傳遞那些元素進去,到底是怎么排序的。其實我們自定義的sortNum()被傳入array.sort()之后,由array.sort()將數組里的元素兩兩傳入sortNum()來進行大小比較,也就是說不需要我們手動傳入數組元素。

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

小菜鳥工程師

請問為什么不是.sort(sortNum())而是.sort(sortNum)呢???調用函數sortNum為什么不加括號,而是像調用對象一樣的?
2019-07-03 回復 有任何疑惑可以回復我~
#2

沈夜 回復 小菜鳥工程師

“sortNum()被傳進去的時候其實是以“函數指針”的方式傳進去的”,調用函數是需要加括號的,但是這里并不是調用函數,而是將函數傳進去。你并沒有調用sortNum()這個函數,你只是將它傳遞給別人調用。如果你要真正理解這個語法是怎么回事,你要搜索一下“函數指針”的知識
2019-07-18 回復 有任何疑惑可以回復我~

不要亂理解! myarr.sort(sortNum) 相當于 myarr.sort(function sortNum(a,b) { return a -b;})。

至于為什么這樣寫,建議查看文檔??es6關于該方法的解釋

3 回復 有任何疑惑可以回復我~

我的理解就是固定格式

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

我的理解,指的不是下標,而是ASCII碼,a為97,b為98,a-b是指按ASCII碼進行升序排列

1 回復 有任何疑惑可以回復我~

a,b傳遞的應該不是下標而是數組內的元素,sort()排序是對數組內的元素進行排序,所以取出來比較的不是下標而是元素。

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

舉報

0/150
提交
取消

sortNum(a,b)這個函數使用的時候不應該傳參嗎?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

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