Quería saber si es posible encontrar a través de javascript si una llamada a eval() tiene un error de sintaxis o una variable indefinida, etc ... así que digamos que uso eval para algunos arbitrarios javascript ¿hay alguna forma de capturar el resultado de error de esa evaluación?eval javascript, compruebe el error de sintaxis
Respuesta
Puede probar para ver si un error es de hecho un SyntaxError.
try {
eval(code);
} catch (e) {
if (e instanceof SyntaxError) {
alert(e.message);
}
}
De acuerdo con la Mozilla documentation for eval
:
eval devuelve el valor de la última expresión evaluada.
Así que creo que puede estar de suerte. Este mismo documento también se desaconseja el uso de eval
:
eval() es una función peligrosa, que ejecuta el código que ha pasado con los privilegios de la persona que llama. Si ejecuta eval() con una cadena que podría verse afectada por una parte maliciosa, puede terminar ejecutando código malicioso en la máquina del usuario con los permisos de su página web/extensión. Más importante aún, el código de un tercero puede ver el alcance en el que se invoca eval(), lo que puede conducir a posibles ataques en formas en que la función similar no es susceptible.
De todos modos, tenga en cuenta los riesgos antes de utilizar esta función.
Acerca de eval being evil, regla de oro: No evalúe la entrada del usuario, solo evalúe las cadenas que usted mismo definió, por ejemplo: desde un servidor. Sí, ataque MiTM, pero si no puedes confiar en tu servidor, entonces tienes mayores problemas. – CularBytes
Puede usar http://www.jslint.com/ que contiene un analizador de javascript escrito ni javascript. Le dará mucha información sobre su código, puede configurarse para ser más relajado o no, etc. ...
Al utilizar try catch para detectar un tipo de error en particular, debe asegurarse de que no se den otros tipos de excepciones. suprimido De lo contrario, si el código evaluado arrojara un tipo diferente de excepción, podría desaparecer y provocar un comportamiento inesperado del código.
Yo sugeriría que escribe código como este:
try {
eval(code);
} catch (e) {
if (e instanceof SyntaxError) {
alert(e.message);
} else {
throw(e);
}
}
Tenga en cuenta la sección de "otra cosa".
throw no es una función – Dev
- 1. JavaScript Error de sintaxis
- 2. JavaScript eval() "error de sintaxis" al analizar una cadena de función
- 3. Eval() = símbolo inesperado: Error
- 4. Especifique el alcance para eval() en JavaScript?
- 5. error de sintaxis dando eval incluso cuando el código correcto dado
- 6. Script de shell: compruebe la sintaxis
- 7. Cómo ejecutar "eval" sin escribir "eval" en JavaScript
- 8. (1, eval) ('this') vs eval ('this') en JavaScript?
- 9. Jinja y el conflicto de sintaxis javascript?
- 10. permisos Watin problema cuando eval código javascript
- 11. Javascript eval() Excepción - número de línea
- 12. javascript eval y evaluación de objeto
- 13. Javascript: compruebe si el elemento ha cambiado
- 14. HTML DOCTYPE error de sintaxis
- 15. ¿Cuál es el propósito de eval en JavaScript?
- 16. Javascript: [] = 5, sin error de sintaxis? ¿Por qué?
- 17. (function eval() {}) arroja un error de sintaxis si el cuerpo de la función está en modo estricto?
- 18. Oracle error de sintaxis
- 19. Error de sintaxis "=="
- 20. ¿Por qué eval es inseguro en javascript?
- 21. Alternativas a JavaScript eval() para analizar JSON
- 22. ejecutando funciones anónimas creadas usando JavaScript eval()
- 23. Falta el error de sintaxis; antes *
- 24. HyperLink con NavigateUrl con Eval(). ¿Dónde está el error?
- 25. Javascript eval() para la función con argumento
- 26. ¿Cómo anular la función eval en javascript?
- 27. verificación de sintaxis javascript para Internet Explorer
- 28. Prototipo Javascript indefinido después de la deserialización eval
- 29. Determine si la sintaxis de JavaScript es válida en el controlador de cambio de ACE
- 30. EVAL en el Esquema
Me pregunto por qué no probé esto yo mismo. ¡Muchas gracias! –
@Jesus: el hecho de que te lo estés preguntando es algo bueno. En fin, buena suerte. – ChaosPandion