當前位置:
首頁 > 知識 > 關於js中的arguments,只需要搞懂這三點

關於js中的arguments,只需要搞懂這三點


點擊上方藍字關注「小鄭搞碼事」,每天都能學到知識,搞懂一個問題!

在JS函數體內,存在一個Arguments對象的實例arguments,具體特殊的意義和用法。總的來說,我們需要理解的就以下三點:

關於js中的arguments,只需要搞懂這三點

一、實現重載

我們都知道,在JavaScript中並沒有函數重載的功能,但是Arguments對象能夠模擬重載,比如,最簡單的一種方式,根據參數的個數進行重載。如下圖

關於js中的arguments,只需要搞懂這三點

如上圖代碼所示,列印出來的就是2。這樣就實現了函數重載。

當然,利用Arguments對象實現函數重載的方式可以有幾種,除了根據參數的個數,還可以根據傳入參數的類型來執行不同的操作,也可以利用參數中特殊的參數值來進行不同的操作。


二、同數組下標訪問實參

JavaScript中每個函數都會有一個Arguments對象的實例arguments,它引用著函數的實參,而且可以用數組下標的方式來引用arguments的元素。如下圖

關於js中的arguments,只需要搞懂這三點

如上圖代碼所示,arguments.length為函數實參的個數,要注意的是,arguments對象並不是一數組,它也不具有數據的所有方法,但是訪問單個參數的方式與訪問數組元素的方式相同,如上圖代碼中argument[0]...。

三、屬性callee指向自己

對象都是有自己的屬性和方法的,Arguments對象也是一樣,callee就是它的方法,這個方法用的不多,很容易被我們忽略,它指向的是正在被執行的Function對象,最常用的例子就是用來做遞歸了。如下圖

關於js中的arguments,只需要搞懂這三點

如上圖代碼所示,實現了6+5+4+3+2+1的操作。


最後總結:

在平時的封裝和使用JS過程中,callee方法用的比較少,其它一般都會用到,現在,我在用幾句話在來總結一下對arguments的理解:

1、arguments像數組,是一個Arguments對象實例。

2、arguments有length屬性,代表傳給函數的參數個數。

3、可以數組下標訪問參數,如arguments[0],無數組其它方法。

4、存儲的是實參不是行參。

5、可以使用callee屬性調用自身。

以上都是小鄭子個人理解,如有不對,歡迎留言交流,謝謝!

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 小鄭搞碼事 的精彩文章:

想了解函數引用和函數調用本質區別的,這篇文章不要錯過

TAG:小鄭搞碼事 |

您可能感興趣

穿Vetements tabi的人從不需要知道Martin Margiela是誰
做一個好的設計,需要考慮那些因素byFoster+partners設計事務所
python開發利器,python shell和vim中都需要的tab補全方法
急停變向?你可能需要一雙adidas Harden Vol.2
Learning Dharma Requires Good Companions 學佛需要善友
Forest: 節後收心,你需要這個專註助手 | Hello App
關於Harden Vol.2 你需要知道這些
cosplay是需要演技的
需要Windows才能在發布時運行Oculus Rift
Kali Linux 是什麼,你需要它嗎?
Supreme x LV | 機會來了,只需要19萬美刀,Supreme x Louis Vuitton法拉利直接開走!
Bronzer VS Contour!節後胖五斤的你需要知道這些修容小技巧
收到學校的waitlist之後,你需要做些什麼
Xbox老大Phil Spencer:微軟需要一個復甦的機會
seo需要學習python嗎?學習python有什麼好處?
你需要關注這個戲謔時裝品牌的 Instagram 賬號
關於Oculus Rift 2虛擬現實設備我們需要知道的一切
舊 iPhone 6 Plus 損壞需要更換?蘋果可能為你「升級」6s Plus
Geoffrey Hinton:人工智慧需要重頭再來
Telegram發行的gram代幣值不值得投?你需要先讀這篇文章