如果多次使用它,我应该在jQuery中缓存$(this)吗?

Mar*_*kus 6 performance jquery jquery-selectors

我知道如果您多次使用它,您应该缓存选择器的结果.一个例子是:

var $selected = $('.some-selected-element');

process($selected);
doStuff($selected);
Run Code Online (Sandbox Code Playgroud)

$(this)如果多次使用缓存,是否有任何性能优势?

$('.some-selector').hover(function () {
    if (!$(this).hasClass('some-other-class')) {
        $(this).addClass('another-class');
    }
    process($(this));
}
Run Code Online (Sandbox Code Playgroud)

Rob*_*ert 8

是的,性能会有所提高,因为它会阻止jQuery解释您的选择器.

这是选择器的解释,以及你将绕过的东西.https://github.com/jquery/jquery/blob/master/src/core.js#L78-188

基本上,这部分

if ( selector.nodeType ) {
    this.context = this[0] = selector;
    this.length = 1;
    return this;
}
Run Code Online (Sandbox Code Playgroud)