我有两个场景。在每个场景中,告诉我哪个版本的相同内容更有效(例如使用更少的CPU或内存):
第一个场景:
/*version 1*/
$('body').append('#something');
/*version 2*/
$('#something').insertAfter('body > *:last-child');
第二个场景:
/*version 1*/
$('#something').method1();
$('#something').method2();
$('#something').method3();
/*version 2*/
var $reference = $('#something');
$reference.method1();
$reference.method2();
$reference.method3();
那么在每个scenerio中哪个版本效率更高?
答案 0 :(得分:3)
这可能不是您正在寻找的答案,但是......
在宏观的计划中,差异将是如此难以衡量,以至于它并不重要。只需专注于编写干净,简单且易于维护的代码。
答案 1 :(得分:3)
在第一种情况中,第一种情况更有效,因为$("#someid")
最终等同于document.getElementById
调用,这是对本机代码的调用。与类选择器相比,Id选择器相当便宜。拨打$('body > *:last-child')
对SizzleJS的调用会更加复杂。
在第二种情况下,第二种情况更有效率,因为您避免再对document.getElementById
进行两次调用,而只是预先声明您的对象。
答案 2 :(得分:2)
$('#something').method1().method2().method3();
除非您打算重复使用该对象,否则请执行
var $ref = $('#ref');
$ref.method1().method2().method3();