如果您正在执行以下操作:
var i = $('input[@name=some_field]'); if (i.val() != '' && !(i.val() >=1 && i.val() <= 36) || i.val() == 'OT')) { i.focus(); }
是i.val()
速度不够快,多次使用它,或者你应该做的:
var value = i.val();
首先在if语句中使用value,如:
var i = $('input[@name=some_field]'); var value = i.val(); if (value != '' && !(value >=1 && value <= 36) || value == 'OT')) { i.focus(); }
...?
这不一定是jQuery问题,但它适用于大多数编程语言.事实上,这个问题还有很多,而不仅仅是性能问题.
要记住的一件事是,如果存储该值,则在执行后续代码期间不会发生更改.大多数时候,这是你期望和想要的.但是在某些情况下,对val()的调用也会返回一个不同的值,特别是如果你循环并做一些需要花费很多时间的事情.
在您的特定示例中,这种情况发生的可能性非常低,因为它只有少数几个调用而不是循环结构.鉴于只有几个电话,性能可能不会成为这里的主要问题.但是关键点的理论仍然存在 - 如果你想保证价值不会改变,就把它放在一个变量中.既然它也为您提供了最佳的性能考虑因素,我认为这在大多数情况下都是最佳实践.