久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - jQuery each 方法第三個(gè)參數(shù)args 如何解釋?

瀏覽:144日期:2023-03-11 11:10:00

問題描述

空閑的時(shí)候看看jq源碼,發(fā)現(xiàn)each方法、map方法、makeArray都申明了:僅限于內(nèi)部使用(// arg is for internal usage only),查閱了大量資料都沒找到答案,就連jquery的api都只給出了前兩個(gè)參數(shù)的解釋,難道是調(diào)試用的?那怎么用呢?

源代碼

// 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)過大量測(cè)試,我發(fā)現(xiàn)第三個(gè)參數(shù)還有限制,不能傳的類型有:數(shù)字,字符串,json等;只能傳數(shù)組;別的類型我就沒在一一測(cè)試了在傳入數(shù)組的時(shí)候,callback必須用和args數(shù)組中長(zhǎng)度一樣多的參數(shù)來一一接收args數(shù)組中的值,如果數(shù)組中有三個(gè)值,callback只有一個(gè)形參,那么這個(gè)形參只能接收到args[0]的值。而且我們可以通過arguments來打印args中的所以傳過來的值(都是按照順序全部傳過來了的),其中一個(gè)測(cè)試代碼:

// 首先each我傳入了三個(gè)參數(shù)// 通過這種方式,我取到了a,b,c 的三個(gè)值分別為’wo’, ’ai’, ’ni’// 多次嘗試,我發(fā)現(xiàn)args傳過來的三個(gè)參數(shù)是按照順序排列好的,// 如果只有一個(gè)參數(shù)那么,我們就只能取到’wo’,// 當(dāng)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) // 回調(diào)中的所有參數(shù)會(huì)根據(jù)each第一個(gè)參數(shù)的長(zhǎng)度進(jìn)行多次打印,所以每次打印的this都指向每一次的arr的值 }, [’wo’, ’ai’, ’ni’])參考

我發(fā)現(xiàn)在segmentfault 之前也有人問過這個(gè)問題,可惜沒有人給出答案/q/10...

問題解答

回答1:

謝謝大家,問題解決了,我知道為什么了

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 故城县| 蓬溪县| 如皋市| 桐梓县| 东兰县| 无极县| 凉城县| 井冈山市| 名山县| 轮台县| 扎兰屯市| 井陉县| 茌平县| 临清市| 桦川县| 安庆市| 新营市| 太原市| 宜兰市| 邛崃市| 依兰县| 安乡县| 莱西市| 台北县| 卢氏县| 阳山县| 宁都县| 陆川县| 林周县| 青河县| 博兴县| 兴山县| 南安市| 镇原县| 灵璧县| 无锡市| 通道| 晋中市| 乌鲁木齐县| 镇远县| 简阳市|