Q: ¿Por qué mi función para evaluar comandos no devuelve el resultado correcto? Tengo problemas con el siguiente ejercicio. Cuando ejecuto el código mas abajo,
e ingreso ppp, el resultado deberia mostrarse como *25**25**25* pero me
aparece ***25***. Y al utilizar el ejemplo me muestra *NaN*.
Esta es la consigna del ejercicio:

Implementar una función en JS que recibe un string que contiene una secuencia de comandos que se asume en minúsculas (que se detalla más adelante) 
  y un número y retorna un string con el resultado de aplicar dichos comandos en forma sucesiva a ese número.
  Cada comando es un carácter y puede ser:
  i: incrementar el número en 1
  d: decrementar el número en 1
  c: elevar al cuadrado el número
  p: agregar el número al string resultado, entre "*"
  Si viene cualquier otro carácter debe ser ignorado.
  Ejemplo 1) se invoca a la función con la secuencia "iicxdpcp" y el valor 1, retorna: "*8**64*"

Y este es el código que hice:
var secuencia = prompt("Ingrese secuencia")
var numero = parseInt(prompt("Ingrese numero"))

function proceso(secuencia, numero) {
    for (i = 0; i <= secuencia.length; i++) {

        if (secuencia.charAt(i) === "i") {
            numero++
        }

        if (secuencia.charAt(i) === "d") {
            numero--
        }
        if (secuencia.charAt(i) === "c") {

            numero = Math.pow(numero, 2)

        }

        if (secuencia.charAt(i) === "p") {

            numero = "*" + numero + "*"

        }

    }
    return numero


    console.log(numero)

}



proceso(secuencia, numero)


A: Si entendí bien tu consulta el tema va por esta linea
`numero = "*" + numero + "*"`

Cuando se tiene la secuencia ppp y el numero 25 debería ser así:
//Se encadena un texto en cada iteracción
var seq = "" 
var num = 25 (numero)

seq = seq      + "*"+ num + "*" (sentencia)    
seq = ""       +  * + 25  +  *  (primer loop)
seq = *25*     +  * + 25  +  *  (segundo loop)
seq = *25**25* +  * + 25  +  *  (tercer loop)

Se necesitan dos variables una del tipo string seq y otro del tipo integer num porque al tratar de tener una única variables numero esta se volverá string "iicxdpcp" en la primera p y cuando se llegue a la siguiente letra c arroja el código NaN ya que se está ejecutando


console.log(Math.pow("*8*",2))   //NaN


El código quedaría en tal sentido así


function proceso(secuencia, numero) {
    var num = numero
    var seq = ""
    
    for (i = 0; i <= secuencia.length; i++) {

        if (secuencia.charAt(i) === "i") num++
        if (secuencia.charAt(i) === "d") num--
        if (secuencia.charAt(i) === "c") num = Math.pow(num, 2)

        if (secuencia.charAt(i) === "p") {
            
            seq = seq + "*" + num + "*" // `${seq}*${num}*`

        }

    }
    return seq
}


var secuencia = "ppp"
var numero = 25
ans = proceso(secuencia, numero)
console.log(ans)


var secuencia = "iicxdpcp"
var numero = 1
ans = proceso(secuencia, numero)
console.log(ans)


