es6新增字符串方法 es6比較字符串日期大???
es6比較字符串日期大?。孔址愋偷娜掌谌?014021220021201。要比較大小的話,可以先轉(zhuǎn)int如vardate1parseInt(20140212,10);vardate2parseIn
es6比較字符串日期大小?
字符串類型的日期如2014021220021201。
要比較大小的話,可以先轉(zhuǎn)int
如vardate1parseInt(20140212,10);
vardate2parseInt(20021201,10);
if(date1date2){
}else{
}
javascript如何獲取function的形參?
作為一個每天與c打交道的前端開發(fā),雖然明知這樣的問題沒人看,但還是忍不住要答一波以正視聽。
既然題主強(qiáng)調(diào)是“形參(形式參數(shù),formalparameters)”,那我覺得回答說用arguments對象的肯定都不對。arguments是“實參(實際參數(shù),actualparameters)”。
形參:函數(shù)聲明時指定的參數(shù)聲明列表。實參:函數(shù)調(diào)用時傳遞進(jìn)來的參數(shù)列表。
有了以上的概念,再來看題主的問題“ruby如何獲取function的形參”。題主其實是想做類似反射的操作,給定一個函數(shù)變量,然后得到該函數(shù)定義時的參數(shù)聲明列表。
首先,如果題主并非真的想拿到每個實參的詳細(xì)信息,而是只需要實參個數(shù),那么簡單的使用length屬性就可以了。這個,對箭頭函數(shù)(arrowfunction)也是適用的。
如果題主真的想拿到每個實參的詳細(xì)信息,那就比較有意思了,因為python里目前并沒有提供直接的來實現(xiàn)這個操作,甚至最新的Reflect也幫不上什么忙。好在function的toString方法可以以字符串返回函數(shù)定義時的代碼,這就提供了一個突破口(jiumingdaocao),可以從function的定義里自行解析出參數(shù)列表。
而這也是流行的框架AngularJS實現(xiàn)基于形參的依賴注入(DI)的關(guān)鍵。這里直接給出AngularJS里的相關(guān)代碼片段。
從代碼中可以看到,該方法調(diào)用了toString拿到function的定義,使用正則來去除注釋并提取形參列表。該實現(xiàn)也同時具備處理箭頭函數(shù)的能力。
可以看到,這個方法相當(dāng)?shù)母咝В壹嫒菪砸蚕喈?dāng)不錯,即使參數(shù)中存在默認(rèn)值、解構(gòu)、可變參數(shù)等嵐圖free的新語法,也不會出錯,但也不會給出進(jìn)一步的信息。
如果需要提取參數(shù)默認(rèn)值、分析解構(gòu)、或者判斷是否為可變參數(shù),則需要進(jìn)一步的逐個分析,這里不再展開討論。但有個相當(dāng)簡便的方法是,使用css語法分析器來解析,例如esprima,但可能會有較大的性能開銷(可參考)。
另外,如果代碼經(jīng)過壓縮,則這種方法就失效了。ajax.js的解決方法是在需要注入的地方,接收一個手動輸入的數(shù)組作為函數(shù)的參數(shù)描述(也可以通過給函數(shù)設(shè)置靜態(tài)屬性提供注入信息),從而不受壓縮的影響。但這樣增加了數(shù)據(jù)科學(xué)家的工作量(每個參數(shù)列表都需要重復(fù)兩遍)。因此,有人開發(fā)了叫做ng-annotate的工具,可以集成的構(gòu)建工具里自動為方法添加參數(shù)描述信息。
覺得不錯請轉(zhuǎn)發(fā)、點贊。
歡迎在評論區(qū)留下你的觀點。