¿Hay alguna manera de obtener el número de línea fuente en Javascript, como __LINE__
para C o PHP?__LINE__ equivalente en Javascript
Respuesta
Hay camino, aunque más caro: lanzar una excepción, cogerlo inmediatamente, y cavar a cabo la primera entrada de su seguimiento de la pila. Consulte el ejemplo here sobre cómo analizar la traza. El mismo truco también se puede usar en Java simple (si el código está compilado con la información de depuración activada).
Editar: Aparentemente no todos los navegadores soportan esto. La buena noticia es (¡gracias por el comentario, Christoph!) Que algunos navegadores exportan el nombre del archivo fuente y el número de línea directly through the fileName
and lineNumber
properties of the error object.
La respuesta corta es sin.
La respuesta larga es que, dependiendo de su navegador, es posible que pueda lanzar & para capturar una excepción y extraer un rastro de pila.
Sospecho que está utilizando esto para la depuración (así lo espero, de todos modos!) Por lo que su mejor opción sería usar Firebug. Esto le dará un objeto console
; puede llamar al console.trace()
en cualquier punto para ver qué está haciendo su programa sin interrumpir la ejecución.
Hay una solución.
lo general, el __ __ LÍNEA combinado con el __ __ archivo se utiliza para marcar un código de localizaciones en y el marcado se realiza para encontrar ese lugar más tarde.
Sin embargo, es posible lograr el mismo efecto utilizando Identificadores únicos globales (GUID-s) en lugar de __ LINE __ y __ FILE __. Los detalles de la solución residen en el COMMENTS.txt de un conjunto de herramientas con licencia de BSD que automatiza el proceso.
No entiendo ... ¿Puede usted explicar? – Jason
A __LINE__
en C se ha ampliado por preprocessor que literalmente lo reemplaza con el número de línea de la entrada actual. Por lo tanto, cuando vea
printf("Line Number: %d\r\n", __LINE__);
el compilador ve:
printf("Line Number: %d\r\n", 324);
En efecto, el número (324 en este caso) está codificada en el programa. Es solo este mecanismo de dos pasos que hace esto posible.
No sé cómo PHP logra esto (¿es pre-procesada también?).
Sí, PHP está preprocesado. De hecho, es un acrónimo recursivo: PHP -> PHP: preprocesador de hipertexto. Sin embargo, el acrónimo original era * Páginas de inicio personales *. – alex
Puede intentar ejecutar el preprocesador C (por ejemplo, cpp
de la Colección de compiladores GNU) en sus archivos javascript, ya sea dinámicamente con cada solicitud o de forma estática, haciendo que esta operación se aplique cada vez que cambie sus archivos javascript. Creo que la sintaxis de JavaScript es lo suficientemente similar para que esto funcione.
entonces tendría todo el poder del preprocesador C.
creo preprocesamiento tiene más sentido, en el que se añade ninguna sobrecarga en tiempo de ejecución. Una alternativa al preprocesador C es usar perl, como en el procedimiento de 2 pasos a continuación:
1 - agregue "Línea n. ° 999 \ n" a cada línea del guión que desea numerar, p.,
alert ("Line # 999 \n"+request.responseText);
2 – run the perl below:
cat my_js.js | perl -ane "{ s/Line # \d+ /Line # $. /; print $_;}" > C_my_js.js; mv C_my_js.js my_js.js
- 1. __LINE__ equivalente en Java?
- 2. Equivalente a `__FILE__`,` __LINE__` en bash
- 3. equivalente de Haskell de C __LINE__
- 4. Visual C++ equivalente de __FILE__, __LINE__ y __PRETTY_FUNCTION__
- 5. __LINE__ función en Groovy
- 6. ¿Cuándo comienza un nuevo __LINE__?
- 7. Objective-C xcode: ¿Equivalente a __FILE__ y __LINE__ de C/C++?
- 8. C# String.IsNullOrEmpty JavaScript equivalente
- 9. Javascript en equivalente fijo en java
- 10. __LINE__ para diferentes nombres de variables
- 11. lua equiv de __LINE__ y __FILE__?
- 12. equivalente en Java de String.match de JavaScript()
- 13. equivalente al operador javascript || en Scala
- 14. Oracle NVL función equivalente en javascript/jQuery
- 15. pdb.set_trace() equivalente en el navegador web javascript?
- 16. Equivalente a Ruby Enumerable # each_slice en Javascript?
- 17. JavaScript equivalente para PHP preg_replace
- 18. JavaScript equivalente a Python's __setitem__
- 19. JavaScript equivalente de preg_replace PHP
- 20. Comportamiento de las funciones en línea __LINE__ en
- 21. ¿Qué significa class_eval << - "end_eval", __FILE__, __LINE__ en Ruby?
- 22. __FILE__, __LINE__, y el uso __FUNCTION__ en C++
- 23. equivalente de Javascript del strtotime de php()?
- 24. Rubí equivalente a una función javascript auto
- 25. ¿Hay un JavaScript equivalente para C# 'params'?
- 26. Javascript equivalente nativo para jQuery event.preventDefault
- 27. Javascript equivalente a urldecode de php()
- 28. equivalente de javascript puro de jquery click()?
- 29. ¿Hay un equivalente a php.net para JavaScript?
- 30. jQuery equivalente del método addEventListener de JavaScript
navegadores que añaden un seguimiento de pila a error objetos también podrían exponer una propiedad 'lineNumber' directamente - sin necesidad de analizar allí ... – Christoph