2010-12-21 19 views
5
लोगों

हम सब देखा है जो ऐसा करते हैं:जावास्क्रिप्ट में कंप्यूटिंग पावर का सबसे आम अपशिष्ट क्या है?

jQuery('a').each(function(){ 
    jQuery(this)[0].innerHTML += ' proccessed'; 
}); 

function letsPoluteNS() { 
    polute = ''; 
    for (morePolution = 0; morePolution < arguments.length; morePolution++) 
     polute.join(arguments[morePolution]); 
    return polute; 
} 

और इतने पर। मैं सोच रहा था कि लोगों ने सबसे आम जावास्क्रिप्ट/jQuery तकनीक को देखा है जो पृष्ठ को धीमा कर रहा है और/या जावास्क्रिप्ट इंजन के लिए समय बर्बाद कर रहा है।

मुझे पता है कि यह प्रश्न किसी स्वीकार्य प्रश्न में फिट नहीं हो सकता है, फिर भी मैं पूछ रहा हूं "सबसे आम स्वीकार्य अपशिष्ट क्या है?"

+1

आप "सबसे आम स्वीकार्य अपशिष्ट" का न्याय कैसे करते हैं? –

उत्तर

3

मैं इसका अपराध कर रहा हूं। मूल रूप से एक jQuery चयनकर्ता में केवल तत्व की कक्षा का उपयोग कर। तत्व टैग नाम के साथ कक्षा चयनकर्ता के संयोजन के बजाय।

<div></div> 
<div class="hide"></div> 
<div class="show"></div> 
<div class="hide"></div> 
<div class="hide again"></div> 

$(".hide").hide(); 
चयनकर्ताओं

के लिए संदर्भ पैरामीटर के तेज

$("div.hide").hide() 


उपयोग इसके अलावा इस अक्षम, कई लोग नहीं बनाते हैं है के बजाय

$(selector, [ context ])


$("#mydiv").click(function() { 
     $("#mydiv span").show(); 
    } 

कौन इस तरह बेहतर संभाला जा सकता है:

$("#mydiv").click(function() { 
     $("span", this).show(); 
    } 
+4

पर सेट है क्या? 'हैलो' निश्चित रूप से तेज़ है (' document.getElementById() 'इसके बावजूद)। – BoltClock

+0

हाँ getElementById {getElementByClassname-> getElementById} से कहीं अधिक तेज़ है, यहां तक ​​कि ओवरहेड – qwertymk

+0

'$ (" # हैलो ") के बिना भी' getElementById ('हैलो') के समान है; 'जो प्राप्त करने का एक बहुत ही प्रभावी तरीका है एक डोम तत्व। चयनकर्ता को अतिरिक्त टैग नाम जोड़ना मदद नहीं कर रहा है। –

1

कुछ भी जो ट्रैकिंग उपयोगकर्ताओं और भारी प्रचार के साथ किया गया है। चीजें निश्चित रूप से जगह बर्बाद कर दिया।

मुझे लगता है कि बहुत जटिल एचटीएमएल में चयनकर्ता के रूप में कक्षाओं का उपयोग करने जैसी चीजों का गलत उपयोग चीज धीमा हो जाएगा। और ie बेशक।

+4

यहां: 'के लिए (z = 0; z <1000; z ++) {showUglyPopupAd()} ' – JCOC611

+0

@ जेसीओसी 611 बिल्कुल! – Iznogood

+0

आप इसे z> 1000 – travelboy

0

$ .animate कॉलिंग तत्वों चीजों को धीमा करना चाहिए चेतन करने के लिए।

1

इस देखेंगे:

$('#this').find('a').doSomeThing(); 

पता क्या एक बहुत अधिक कुशल है? एक चयनकर्ता जो दोनों को कवर करता है, आपको बेहतर सर्वर देगा ...

$('#this a').doSomeThing(); 

यह स्पष्ट प्रतीत होता है, लेकिन आप इसे हर समय देखेंगे।

+0

वास्तव में, सच नहीं है। पहला एक तेज़ है क्योंकि यह सीधे खोज को संकीर्ण करने के लिए 'document.getElementById()' पर भेजता है। –

+0

तो चयनित सेट पर लूपिंग अधिक कुशल है? मैं हमेशा पसंदीदा चयन करने के लिए एक चयनकर्ता को समझता हूं। –

+0

यह निर्भर करता है। चीजें जो सीधे ब्राउज़र द्वारा संभाली जा सकती हैं हमेशा तेज होती हैं। सबसे स्पष्ट उदाहरण 'getElementById() 'है, लेकिन यदि ब्राउज़र' getElementsByName',' getElementsByTagName' या 'querySelectorAll' का समर्थन करता है, तो यह चयनकर्ता को आपूर्ति करने के लिए तेज़ होगा जो सीधे उन कार्यों द्वारा संभाला जा सकता है और jQuery का उपयोग करके परिणाम फ़िल्टर कर सकता है तरीकों। –

0

अपने युद्धों को गेटगो से घोषित नहीं करते हैं, इसलिए वे कैश किए जाते हैं, बंद करने का उपयोग नहीं करते हैं और उसी फ़ंक्शन/कॉल/आदि के x नंबर को दोहराते हैं, लेकिन केवल eval() का उपयोग करके प्रत्येक के लिए आईडी या कक्षा बदलते हैं।

संबंधित मुद्दे