Diese Frage habe ich mir kürzlich auch gestellt.
Es gibt mehrere mögliche Lösungen, hier sind 3 davon gültig:
Die letzte Lösung, bei der eine Schleife verwendet wird, ist mir noch nicht begegnet.
Überraschenderweise übertrifft diese Lösung die ersten 3 um ein Vielfaches.
Hier ist der jsperf-Test, den ich durchgeführt habe, um zu dieser Schlussfolgerung zu gelangen: http://jsperf.com/startswith2/2
Frieden
ps: ecmascript 6 (harmony) führt eine native startsWith
Methode für Zeichenketten.
Man denke nur daran, wie viel Zeit man hätte sparen können, wenn man daran gedacht hätte, diese dringend benötigte Methode bereits in die ursprüngliche Version aufzunehmen.
Update
Wie Steve hervorhob (der erste Kommentar zu dieser Antwort), wird die obige benutzerdefinierte Funktion einen Fehler auslösen, wenn die angegebene Präfix kürzer ist als die gesamte Zeichenkette. Er hat das behoben und eine Schleifenoptimierung hinzugefügt, die unter folgender Adresse eingesehen werden kann http://jsperf.com/startswith2/4 .
Beachten Sie, dass es 2 Schleifenoptimierungen gibt, die Steve eingebaut hat. Die erste der beiden hat eine bessere Leistung gezeigt, daher werde ich diesen Code weiter unten veröffentlichen:
function startsWith2(str, prefix) {
if (str.length < prefix.length)
return false;
for (var i = prefix.length - 1; (i >= 0) && (str[i] === prefix[i]); --i)
continue;
return i < 0;
}