Хотите оптимизации, ну тогда вот ловите.. Думаю ни для кого не секрет что вычитание работает в разы быстрее сложения.
function strpos(substring, string) {
var substringStartPos = substring.length - 1;
var subindex = substringStartPos;
var index = string.length - 1;
for( ;subindex >= 0 && index >= 0; ) {
if (substring.charCodeAt(subindex) === string.charCodeAt(index)) {
subindex--;
} else if (subindex !== substringStartPos) {
index += substringStartPos - subindex;
subindex = substringStartPos;
}
index--;
}
return substringStartPos && subindex === -1;
}
console.time('compare by char codes');
for (var i=0; i<100000; i++) strpos('друг', 'здравствуй, здравствуй, друг мордастый!');
console.timeEnd('compare by char codes');