javascript - es6擴(kuò)展運(yùn)算符...的問題
問題描述
擴(kuò)展符復(fù)制數(shù)組我能理解,但用于函數(shù)傳遞參數(shù)的不懂
如上,為什么函數(shù)參數(shù)加上擴(kuò)展運(yùn)算符以后,就能接受若干個(gè)參數(shù)?
fn(...arg)要怎么理解
問題解答
回答1:函數(shù)定義的時(shí)候, 這應(yīng)該叫剩余參數(shù).
如果函數(shù)的最后一個(gè)命名參數(shù)以...為前綴,則在函數(shù)被調(diào)用時(shí),該形參會(huì)成為一個(gè)數(shù)組,數(shù)組中的元素都是傳遞給該函數(shù)的多出來的實(shí)參的值。
看 MDN 詳細(xì)解釋:https://developer.mozilla.org...
回答2:你可以先看一下這個(gè)栗子
這里的...arg其實(shí)是獲取arguments的值,所以你方法可以改寫成這樣
function fn(){ var arg = [...arguments]; console.log(...arg);}回答3:
把a(bǔ)rguments轉(zhuǎn)換成數(shù)組
回答4:官方解釋:
Bind trailing parameters to an array.
用在函數(shù)參數(shù)中,就是將此處開始的參數(shù)轉(zhuǎn)換成一個(gè)數(shù)組。
fn(...args)//所有參數(shù)變?yōu)閿?shù)組fn(a, ...args)//從第二個(gè)參數(shù)變?yōu)閿?shù)組回答5:
函數(shù)的形參本來就會(huì)保存到argument這個(gè)類數(shù)組里邊,...操作符可以把類數(shù)組轉(zhuǎn)成數(shù)組
回答6:你需要ECMAScript 6 入門
回答7:你可以理解為,fn(...arg) 是將參數(shù)的參數(shù),全部放置在arg這個(gè)數(shù)組里.不管你調(diào)這函數(shù)時(shí),傳多少個(gè)參數(shù),都可以由arg來獲取.
函數(shù)參數(shù)可以通過arguments這個(gè)類數(shù)組對(duì)象獲得,你傳入的任意多參數(shù)本質(zhì)上在函數(shù)內(nèi)部就是以類數(shù)組對(duì)象存在的,所以加上擴(kuò)展運(yùn)算符,只是把這個(gè)類數(shù)組變成了參數(shù)序列
相關(guān)文章:
1. angular.js - 輸入郵箱地址之后, 如何使其自動(dòng)在末尾添加分號(hào)?2. javascript - 后臺(tái)管理系統(tǒng)左側(cè)折疊導(dǎo)航欄數(shù)據(jù)較多,怎么樣直接通過搜索去定位到具體某一個(gè)菜單項(xiàng)位置,并展開當(dāng)前菜單3. 如何解決docker宿主機(jī)無法訪問容器中的服務(wù)?4. javascript - Web微信聊天輸入框解決方案5. javascript - 如何使用nodejs 將.html 文件轉(zhuǎn)化成canvas6. python - Scrapy存在內(nèi)存泄漏的問題。7. 如何用筆記本上的apache做微信開發(fā)的服務(wù)器8. CSS3 畫如下圖形9. angular.js - $stateChangeSuccess事件在狀態(tài)跳轉(zhuǎn)的時(shí)候不執(zhí)行?10. android - rxjava merge 返回Object對(duì)象數(shù)據(jù)如何緩存
