繁体   English   中英

jQuery性能变量

[英]jquery performance variable

几个问题,我想知道何时应该使用变量,如果选择器将调用多次,那么我应该对那个选择器进行变量设置?

  1. 局部变量还是全局变量? 例如

var $body = $('body');

如果我有100个jquery函数,则每个函数都需要$('body')选择器,本地100次或全局一次变量会更快?

  1. 如果像下面的功能

    $('.link').on('click', function() { var $this =$(this); $this.addClass('a'); });

函数完成,仅调用$ this一次,我需要$this吗? 或者只是使用$(this) 哪一个更快?

  1. 可变非选择器

    $('one').addClass('a').removeClass('b').html('abcd'); $('two').addClass('a').removeClass('b').html('abcd');

如果我创建一个变量var job = addClass('a').removeClass('b').html('abcd');

`$('one').job;
$('two').job;`

会更快吗? 还是没用?

  1. 调整功能变量的大小,以使全高div,哪个会更快?

    $('#full-height').css({'height' : ($(window).height() + 'px')}); //without variable
    var vH = $(window).height(); $('#full-height').css({'height' : vH + 'px'}); //with variable
    var vH = $(window).height(); $('#full-height').height(vH + 'px'); //with variable and use height() method

以上所有函数都在$(window).on('resize', function() {} ,因此每次重新调整大小函数都将运行时,变量代码会更快吗?

当我需要改变非选择器?

非常感谢

如果您多次使用元素,则将其保存在变量(元素的指针)中肯定会提高性能,因为就像您说的是一个查询一样 ,jQuery会获取所有DOM来查找所需的元素,因此保存查询变量的结果会更快,这是个好习惯。

因此,使用$this代替$(this)也会提高性能。

*对于问题3

您无法执行job = addClass...因为addClass 不是全局函数! 这是一个jQuery对象方法! 因此您只能将其与jQuery对象/元素$jqObject.addClass...

*问题4

就像我说过的,如果您在同一个函数中多次使用方法的结果,则应将其放在变量中,但在您的示例中,您将使用$(window).height(); 只有一次,因此将其放入变量中是没有用的,但这是编写干净代码的好习惯。 并且不会影响性能。

简而言之:如果在同一个上下文中多次使用方法的结果,则将其保存在变量中将提高性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM