2010-12-21 30 views
5

Tất cả chúng ta đều thấy những người làm việc này:Chất thải điện toán phổ biến nhất trong Javascript là gì?

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; 
} 

v.v. Tôi đã tự hỏi những gì mọi người đã thấy kỹ thuật JavaScript/jQuery phổ biến nhất đang làm chậm trang và/hoặc lãng phí thời gian cho công cụ JavaScript.

Tôi biết rằng câu hỏi này có vẻ không phù hợp với câu hỏi được chấp nhận, nhưng tôi hỏi "chất thải được chấp nhận phổ biến nhất là gì?"

+1

Làm thế nào để bạn đánh giá "chất thải được chấp nhận phổ biến nhất"? –

Trả lời

3

Tôi cảm thấy tội lỗi về điều này. Về cơ bản chỉ sử dụng lớp của phần tử trong bộ chọn jQuery. Thay vì kết hợp bộ chọn lớp với tên thẻ phần tử.

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

$(".hide").hide(); 

Thay vì nhanh hơn

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


Ngoài này không hiệu quả, nhiều người không tận dụng các tham số bối cảnh cho bộ chọn

$(selector, [ context ])


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

Mà có thể được xử lý tốt hơn như thế này:

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

Cái gì? '# hello' chắc chắn là nhanh hơn (' document.getElementById() 'mặc dù). – BoltClock

+0

yeah getElementById nhanh hơn nhiều so với {getElementByClassname-> getElementById}, ngay cả khi không có chi phí – qwertymk

+0

'$ (" # hello ")' về cơ bản giống như 'getElementById ('hello');' là một cách rất hiệu quả để có được một yếu tố dom. Thêm tên thẻ bổ sung vào công cụ chọn không giúp ích gì. –

1

Mọi thứ liên quan đến việc theo dõi người dùng và công khai nặng. Thats không gian lãng phí cho chắc chắn.

Tôi đoán việc sử dụng sai các công cụ như sử dụng các lớp thay vì id như bộ chọn trong html rất phức tạp sẽ làm chậm điều xuống. Và ie tất nhiên.

+4

tại đây: 'cho (z = 0; z <1000; z ++) {showUglyPopupAd()}' – JCOC611

+0

@ JCOC611 Chính xác! – Iznogood

+0

bạn có thể làm cho nó thậm chí còn chậm hơn bằng cách thay đổi nó thành z> 1000 – travelboy

0

Gọi $ .animate animate yếu tố nên làm những điều chậm lại.

1

Bạn cũng sẽ thấy điều này:

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

Biết là rất nhiều hiệu quả hơn? Một bộ chọn bao gồm cả hai máy chủ sẽ phục vụ bạn tốt hơn ...

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

Có vẻ như hiển nhiên, nhưng bạn sẽ luôn thấy nó.

+0

Thực ra, không đúng sự thật. Cái đầu tiên nhanh hơn khi nó ủy quyền trực tiếp cho 'document.getElementById()' để thu hẹp tìm kiếm xuống. –

+0

Vì vậy, lặp qua bộ được chọn sẽ hiệu quả hơn? Tôi luôn hiểu một công cụ chọn duy nhất là phương pháp ưu tiên. –

+0

Nó phụ thuộc. Những thứ có thể được xử lý trực tiếp bởi trình duyệt luôn nhanh hơn. Ví dụ rõ ràng nhất là 'getElementById()', nhưng nếu trình duyệt hỗ trợ 'getElementsByName',' getElementsByTagName' hoặc 'querySelectorAll', thì sẽ nhanh hơn để cung cấp bộ chọn có thể được xử lý trực tiếp bởi các hàm đó và lọc kết quả bằng jQuery phương pháp. –

0

không khai báo vars của bạn khỏi getgo để chúng được lưu trữ, không sử dụng bao đóng và lặp lại số x cùng chức năng/cuộc gọi/v.v nhưng chỉ thay đổi id hoặc lớp cho từng, sử dụng eval().

Các vấn đề liên quan