para - ¿Es posible cambiar los valores de la variable JavaScript mientras se depura en Google Chrome?
javascript console chrome (10)
Estoy depurando una aplicación de JavaScript (usando las herramientas de desarrollo de Chrome), y me gustaría cambiar algunos valores de variables mientras paso por el código.
¿Es eso posible?
Lo intenté y obtuve algo así como:
> modeline
1
> modeline=0
0 <<< seems to work but...
> modeline
1 <<< ups!!
Pero no puedo encontrar ninguna documentación que indique lo que se puede o no hacer ...
¿Por qué esta respuesta sigue recibiendo votaciones ascendentes?
Según la respuesta de Mikaël Mayer , esto ya no es un problema, y mi respuesta es obsoleta ( go()
ahora devuelve 30
después de eliminar con la consola). Esto se corrigió en julio de 2013, de acuerdo con el informe de error vinculado anteriormente en el comentario de Gabriel . Me alarma que sigo recibiendo votaciones ascendentes, me hace pensar que el votante no entiende ni la pregunta ni mi respuesta.
Dejaré mi respuesta original aquí por razones históricas, pero iré a votar la respuesta de Mikaël .
El truco es que no puede cambiar directamente una variable local, pero puede modificar las propiedades de un objeto. También puede modificar el valor de una variable global:
var g_n = 0;
function go()
{
var n = 0;
var o = { n: 0 };
return g_n + n + o.n; // breakpoint here
}
consola:
> g_n = 10
10
> g_n
10
> n = 10
10
> n
0
> o.n = 10
10
> o.n
10
Compruebe el resultado de go()
después de establecer el punto de interrupción y ejecutar esas llamadas en la consola, y encontrará que el resultado es 20, en lugar de 0 (pero lamentablemente, no 30).
En realidad hay una solución. Copie todo el método, modifique su nombre, por ejemplo, originalName () a originalName2 (), pero modifique la variable interna para tomar el valor que desee, o páselo como parámetro.
Luego, si llama a este método directamente desde la consola, tendrá la misma funcionalidad, pero podrá modificar los valores de la variable.
Si el método se llama automáticamente, ingrese en la consola
originalName = null;
function originalName(original params..)
{
alert("modified internals");
add whatever original code you want
}
Estaba teniendo el mismo problema, fui a ''Acerca de Google Chrome'' -> Ayuda y decía que necesitaba reiniciar mi navegador para obtener las últimas actualizaciones.
Hice esto, y de repente, ahora puedo cambiar las variables locales. Simplemente haga clic en la variable que desea editar en la ventana Variables de Alcance e ingrese su nuevo valor.
Sin embargo, noté algunas rarezas, que tuve que pasar por encima de algunas asignaciones de var no relacionadas antes de que pudiera alterar el texto en la ventana de la derecha (Variables de Alcance).
Este es un error reconocido en las herramientas de desarrollo de Chrome:
Esto ahora es posible en Chrome 35 (hoy a partir del 11 de julio de 2014). Sin embargo, no sé qué versión lo permitió primero.
Acabo de probar @ gilly3 ejemplo en mi máquina y funciona.
Abra la consola, en
Sources
y en losSnippets
la pestaña, agregue un nuevo fragmento y pegue el siguiente código en él:var g_n = 0; function go() { var n = 0; var o = { n: 0 }; return g_n + n + on; // breakpoint here }
Haga clic derecho en el nombre del fragmento, haga clic en ''Ejecutar'' (esto no activa la función)
- Agregue el punto de interrupción en la declaración de devolución.
- En la consola a continuación, escribe
go()
- y cambie los valores de las variables como se muestra a continuación
y el resultado devuelto g_n + n + on
es 30.
Firebug parece permitirte hacer eso.
No sé por qué el equipo de Chrome no permite esta característica tonta ... pero la única manera en que pude cambiar los valores de las variables con éxito es modificar el script directamente en el editor de Chrome en la pestaña "Fuentes" (esto cambia el comportamiento de su secuencia de comandos hasta que actualice la página), pero los cambios se perderán al actualizar, así que tenga cuidado.
Parece que no.
Ponga un punto de interrupción, cuando se detenga el cambio a la consola, intente establecer la variable. No se equivoca cuando le asigna un valor diferente, pero si lo lee después de la asignación, no se modifica. : - /
Puedo modificar un valor de variable de guión por asignación en la consola. Parece más simple.