javascript - Bagaimana untuk mentafsir argumen parameter ketiga jQuery setiap kaedah?
大家讲道理
大家讲道理 2017-07-05 10:53:30
0
1
1071

Apabila saya bebas, saya melihat kod sumber jq dan mendapati bahawa each方法、map方法、makeArray menyatakan: hanya untuk kegunaan dalaman (// arg adalah untuk kegunaan dalaman sahaja saya menyemak banyak maklumat tetapi tidak menemui jawapannya api jquery hanya memberi Adakah penjelasan dua parameter pertama hanya untuk debugging? Bagaimana untuk menggunakannya?

Kod sumber

// 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;
    }

Selepas banyak ujian, saya mendapati terdapat sekatan pada parameter ketiga Jenis yang tidak boleh dilalui ialah: nombor, rentetan, json, dan lain-lain 只能传数组; dalam tatasusunan, Panggilan balik mesti menggunakan seberapa banyak parameter sebagai panjang tatasusunan args untuk menerima nilai dalam tatasusunan args satu demi satu Jika terdapat tiga nilai dalam tatasusunan dan panggilan balik mempunyai hanya satu parameter formal, maka parameter formal ini hanya boleh menerima nilai args[0]. Dan kita boleh menggunakan argumen untuk mencetak semua nilai yang diluluskan dalam args (semua diluluskan mengikut tertib), salah satu kod ujian:

// 首先each我传入了三个参数
// 通过这种方式,我取到了a,b,c 的三个值分别为'wo', 'ai', 'ni'
// 多次尝试,我发现args传过来的三个参数是按照顺序排列好的,
// 如果只有一个参数那么,我们就只能取到'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) // 回调中的所有参数会根据each第一个参数的长度进行多次打印,所以每次打印的this都指向每一次的arr的值
    },
    ['wo', 'ai', 'ni']
)

Rujukan

Saya dapati ada yang bertanya soalan ini sebelum segmentfault, tetapi malangnya tiada yang memberi jawapan

/q/10...

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

membalas semua(1)
巴扎黑

Terima kasih semua, masalah selesai, saya tahu kenapa

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!