javascript - jQuery each 方法第三個參數(shù)args 如何解釋?
問題描述
空閑的時候看看jq源碼,發(fā)現(xiàn)each方法、map方法、makeArray都申明了:僅限于內部使用(// arg is for internal usage only),查閱了大量資料都沒找到答案,就連jquery的api都只給出了前兩個參數(shù)的解釋,難道是調試用的?那怎么用呢?
源代碼// args is for internal usage only each: function( obj, callback, args ) {var value, i = 0, length = obj.length, isArray = isArraylike( obj );if ( args ) { if ( isArray ) {for ( ; i < length; i++ ) { value = callback.apply( obj[ i ], args ); if ( value === false ) {break; }} } else {for ( i in obj ) { value = callback.apply( obj[ i ], args ); if ( value === false ) {break; }} }// A special, fast, case for the most common use of each} else { if ( isArray ) {for ( ; i < length; i++ ) { value = callback.call( obj[ i ], i, obj[ i ] ); if ( value === false ) {break; }} } else {for ( i in obj ) { value = callback.call( obj[ i ], i, obj[ i ] ); if ( value === false ) {break; }} }}return obj; }
經(jīng)過大量測試,我發(fā)現(xiàn)第三個參數(shù)還有限制,不能傳的類型有:數(shù)字,字符串,json等;只能傳數(shù)組;別的類型我就沒在一一測試了在傳入數(shù)組的時候,callback必須用和args數(shù)組中長度一樣多的參數(shù)來一一接收args數(shù)組中的值,如果數(shù)組中有三個值,callback只有一個形參,那么這個形參只能接收到args[0]的值。而且我們可以通過arguments來打印args中的所以傳過來的值(都是按照順序全部傳過來了的),其中一個測試代碼:
// 首先each我傳入了三個參數(shù)// 通過這種方式,我取到了a,b,c 的三個值分別為’wo’, ’ai’, ’ni’// 多次嘗試,我發(fā)現(xiàn)args傳過來的三個參數(shù)是按照順序排列好的,// 如果只有一個參數(shù)那么,我們就只能取到’wo’,// 當var arr = [5, 7, 5];$.each( arr, function(a, b, c){console.log(a); // ’wo’console.log(b); // ’ai’console.log(c); // ’ni’console.log(arguments); //['wo', 'ai', 'ni', callee: function, Symbol(Symbol.iterator): function]console.log(this) // 回調中的所有參數(shù)會根據(jù)each第一個參數(shù)的長度進行多次打印,所以每次打印的this都指向每一次的arr的值 }, [’wo’, ’ai’, ’ni’])參考
我發(fā)現(xiàn)在segmentfault 之前也有人問過這個問題,可惜沒有人給出答案/q/10...
問題解答
回答1:謝謝大家,問題解決了,我知道為什么了
相關文章:
1. javascript - 請問 chrome 為什么會重復加載圖片資源?2. (python)關于如何做到按win+R再輸入文件文件名就可以運行?3. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處4. python - 能通過CAN控制一部普通的家用轎車嗎?5. javascript - react input file6. javascript - 請教如何獲取百度貼吧新增的兩個加密參數(shù)7. css3 - 微信前端頁面遇到的transition過渡動畫的bug8. Python爬蟲如何爬取span和span中間的內容并分別存入字典里?9. html5 - 只用CSS如何實現(xiàn)input框的寬度隨框里輸入的內容長短自動適應?10. javascript - 關于css絕對定位在ios瀏覽器被橡皮筋遮擋的問題
