關於js中的arguments,只需要搞懂這三點
點擊上方藍字關注「小鄭搞碼事」,每天都能學到知識,搞懂一個問題!
在JS函數體內,存在一個Arguments對象的實例arguments,具體特殊的意義和用法。總的來說,我們需要理解的就以下三點:
一、實現重載
我們都知道,在JavaScript中並沒有函數重載的功能,但是Arguments對象能夠模擬重載,比如,最簡單的一種方式,根據參數的個數進行重載。如下圖
如上圖代碼所示,列印出來的就是2。這樣就實現了函數重載。
當然,利用Arguments對象實現函數重載的方式可以有幾種,除了根據參數的個數,還可以根據傳入參數的類型來執行不同的操作,也可以利用參數中特殊的參數值來進行不同的操作。
二、同數組下標訪問實參
JavaScript中每個函數都會有一個Arguments對象的實例arguments,它引用著函數的實參,而且可以用數組下標的方式來引用arguments的元素。如下圖
如上圖代碼所示,arguments.length為函數實參的個數,要注意的是,arguments對象並不是一數組,它也不具有數據的所有方法,但是訪問單個參數的方式與訪問數組元素的方式相同,如上圖代碼中argument[0]...。
三、屬性callee指向自己
對象都是有自己的屬性和方法的,Arguments對象也是一樣,callee就是它的方法,這個方法用的不多,很容易被我們忽略,它指向的是正在被執行的Function對象,最常用的例子就是用來做遞歸了。如下圖
如上圖代碼所示,實現了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代幣值不值得投?你需要先讀這篇文章