Gracias por las respuestas.
La verdad lo que queria saber es porque no toma la variable php en un archivo externo js porque en teoria.¿Es porque es otra peticion al servidor?Pero en realidad devuelve 1 pagina. No se muy bien como hace eso el servidor.
La idea no era utilizar variables de sesion, tampoco utilizar ajax las 2 son opciones buenas, pero tiene que haber algo que vaya mejor aunque sea mas avanzado.
Otra forma que encontre es declarar variables js globales en la pagina php y despues el sript js externo si te las toma.
A ver si alguien me explica por encima como actua el servidor frente archivos externos.
Saludos