heu, forcément, pas le même langage => syntaxe différente

Pour le charAt au lieu du pointeur, certes, mais c'est vraiment le dernier truc à optimiser. Et pourquoi ne pas inliner ta fonction dans ce cas ? Bref, je ne crois pas que ce soit un problème majeur.
PS : au passage, il me semble que ta fonction ne... fonctionne pas.
Déjà, tu as inversé le test final.
Et même en corrigeant ça,
isInteger("+") ; renvoie true
isInteger("-") ; aussi
isInteger("") ; aussi