Cuando comienzas el bucle con la j:
Código:
for (j=0;palas.length;j++)
palas.length es un número positivo, que siempre es true, luego el bucle continúa indefinidamente, y cuando intenta saber qué es palas[j] cuando j>=palas.length falla, y es nulo o no es un objeto.
La forma ya la sabes.
Código:
for (j=0;j<palas.length;j++)
PD: Sabes que con expresiones regulares puedes hacer [palabra1|palabra2|palabra3...] y así localizar indistintamente cualquiera de ellas, supongo. Lo digo porque será un método más rápido que
splitear todas las palabras, sobre todo cuando el texto sea largo...