30/09/2018, 19:44

getElementByID() va $(#ID) cái nào tối ưu hơn

Hôm bữa đi phỏng vấn thực tập có câu này mà em chịu.Do kiến thức JavaScript còn hạn chế.Theo các bác cái nào thì sử dụng tối ưu hơn,em thì thấy giống nhau.Thế mơi chết chứ.

Gió viết 21:58 ngày 30/09/2018

Bạn đọc mã nguồn của jQuery sẽ rõ hơn thôi. getElementById là có sẵn còn $(id) phải kiểm tra loại của id (string,dom element…) sau đó lại kiểm tra string có phải dạng tag ("[element name]") hay class (".[class name]") … Nhiều thứ đee phân loại nên sẽ lâu hơn

Phan Hoàng viết 21:58 ngày 30/09/2018

Tối ưu về cái gì nhỉ, hehe.

getELementByID là function native của javascript, hiển nhiên chạy nhanh nhất rồi.
Còn $(’#ID’), chắc là hỏi sử dụng hàm trong jquery (aka $jQuery(’#ID’)) bạn sẽ thấy hàm này nó check khá nhiều thứ rồi dùng regex để trả về một object jQuery nên chắc chắn chậm hơn rồi (tuy nhiên lại nhanh hơn cho dev, và perf mất đi cũng chấp nhận được)

github.com

jquery/jquery/blob/master/src/core/init.js

// Initialize a jQuery object
define( [
	"../core",
	"../var/document",
	"../var/isFunction",
	"./var/rsingleTag",

	"../traversing/findFilter"
], function( jQuery, document, isFunction, rsingleTag ) {

"use strict";

// A central reference to the root jQuery(document)
var rootjQuery,

	// A simple way to check for HTML strings
	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
	// Strict HTML recognition (#11290: must start with <)
	// Shortcut simple #id case for speed
	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
This file has been truncated. show original

Câu hỏi phụ:
Ví dụ mình viết function kiểu này
function $(ID){
return getElementById(ID);
}

function này gọi trực tiếp native luôn, liệu có chậm hơn dùng trực tiếp (gọi kiểu $() vs getElementById() ^^)

Jobs Apple Steve viết 21:55 ngày 30/09/2018

jquery hon chu ban nhanh gon nhe

Bài liên quan
0