2012-04-10 17 views
1

In einem anderen question stieß ich auf zwei verschiedene Möglichkeiten, eine Zeichenfolge zu ersetzen.Leistung von Javascript ersetzen vs jQuery ersetzen

Einer ist der jQuery Weg $ ("#element").text().replace(',', '.') und der andere ist der pure Javascript Weg zuerst den Text zu bekommen und dann .replace(/,/, '.') aufrufen.

Gibt es einen großen Leistungseinbruch bei der Verwendung der jQuery-Methode oder einen anderen Grund, sie nicht zu verwenden (vorausgesetzt, Sie haben jQuery bereits auf der Seite)?

Antwort

3

Dies sind beide im Wesentlichen die gleiche Methode.

$('#element').text() gibt eine Zeichenfolge zurück, daher rufen Sie String.prototype.replace() in beiden Beispielen auf.

Der einzige Unterschied, den ich sehen kann, ist, dass Sie in der ersten Methode eine Zeichenfolge für die Ersetzung verwenden und in der zweiten einen regulären Ausdruck verwenden. In den Beispielen Sie gab, wird der String-Methode schneller sein:

http://jsperf.com/string-replace-vs-regexp

Wenn Sie wirklich die beste Leistung zu bekommen, würde ich JavaScript mit reinem vorschlagen:

document.getElementById('element').innerText.replace(',', '.')

0

Beide Methoden des Ersetzens sind genau die gleichen, zwar verwendet man einen String, der andere eine Regex, aber die zugrunde liegende JavaScript-Ersetzungsmethode ist die gleiche. Der einzige Unterschied besteht in der Methode, mit der die Zeichenfolge, auf der die Ersetzung ausgeführt werden soll, zurückgesetzt wird.

Die jQuery-Methode der Retrieval wird marginal langsamer, aber nicht in irgendeiner spürbaren Weise.

0

Allgemein Sprechen, jQuery wird fast immer langsamer, obwohl die Vorteile in der Regel den Leistungseinbruch überwiegen. In diesem Fall vermute ich, dass jQuery diese Methode einfach hinzugefügt hat, um eine bequemere Möglichkeit zu bieten, dasselbe zu tun.

Sofern Sie nicht viele Ersatzanrufe gehen, würde ich mich nicht einmal darum kümmern.

0

Sie machen praktisch das Gleiche. Aber wenn Geschwindigkeit gemeint ist. Seien Sie genauer auf Ihrem jQuery-Selektor.