Có cách nào để lấy số dòng nguồn trong Javascript, chẳng hạn như __LINE__
cho C hoặc PHP không?__LINE__ tương đương trong Javascript
Trả lời
Có một cách, mặc dù đắt hơn: ném một ngoại lệ, bắt nó ngay lập tức và tìm ra mục nhập đầu tiên từ dấu vết ngăn xếp của nó. Xem ví dụ here về cách phân tích dấu vết. Thủ thuật tương tự cũng có thể được sử dụng trong Java thuần túy (nếu mã được biên dịch với thông tin gỡ lỗi được bật).
Chỉnh sửa: Rõ ràng không phải tất cả các trình duyệt đều hỗ trợ điều này. Tin tốt là (cảm ơn cho bình luận, Christoph!) Rằng một số trình duyệt xuất tên tập tin nguồn và số dòng directly through the fileName
and lineNumber
properties of the error object.
Câu trả lời ngắn gọn là không.
Câu trả lời dài là tùy thuộc vào trình duyệt của bạn, bạn có thể ném & bắt ngoại lệ và kéo theo dõi ngăn xếp.
Tôi nghi ngờ bạn đang sử dụng tính năng này để gỡ lỗi (tôi hy vọng vậy, dù sao!) Vì vậy, đặt cược tốt nhất của bạn sẽ là sử dụng Firebug. Điều này sẽ cung cấp cho bạn một đối tượng console
; bạn có thể gọi console.trace()
tại bất kỳ thời điểm nào để xem chương trình của bạn đang làm gì mà không vi phạm thực thi.
Có một giải pháp thay thế.
Thông thường __ LINE __ kết hợp với __ FILE __ được sử dụng để đánh dấu vị trí trong mã và đánh dấu được thực hiện để tìm vị trí đó sau này.
Tuy nhiên, có thể đạt được hiệu quả tương tự bằng cách sử dụng Số nhận dạng duy nhất toàn cầu (GUID-s) thay cho __ LINE __ và __ FILE __. Chi tiết của giải pháp nằm trong COMMENTS.txt của bộ công cụ được cấp phép BSD tự động hóa quy trình.
Tôi không hiểu ... có thể giúp bạn giải thích? – Jason
A __LINE__
trong C được mở rộng bởi preprocessor theo nghĩa đen sẽ thay thế bằng số dòng của đầu vào hiện tại. Vì vậy, khi bạn nhìn thấy
printf("Line Number: %d\r\n", __LINE__);
trình biên dịch thấy:
printf("Line Number: %d\r\n", 324);
Trong thực tế số (324 trong trường hợp này) được mã hóa cứng vào chương trình. Chỉ có cơ chế hai mặt có thể thực hiện điều này.
Tôi không biết PHP đạt được điều này như thế nào (nó có được xử lý trước không?).
Có, PHP đã được xử lý trước. Trong thực tế, nó là một từ viết tắt đệ quy: PHP -> PHP: Hypertext Preprocessor. Từ viết tắt ban đầu là dành cho * Trang chủ cá nhân *. – alex
Bạn có thể thử chạy bộ tiền xử lý C (f.e. cpp
từ Bộ sưu tập GNU Compiler) trên tệp javascript của bạn - động với mỗi yêu cầu hoặc tĩnh, bằng cách thực hiện thao tác này mỗi lần bạn thay đổi tệp javascript. Tôi nghĩ rằng cú pháp javascript là tương tự đủ để làm việc này.
Sau đó, bạn sẽ có tất cả sức mạnh của bộ tiền xử lý C.
Tôi nghĩ rằng tiền xử lý có ý nghĩa hơn, ở chỗ nó không thêm chi phí thời gian chạy. Cách thay thế cho bộ tiền xử lý C đang sử dụng perl, như trong quy trình 2 bước bên dưới:
1 - thêm “Dòng # 999 \ n” vào mỗi dòng trong tập lệnh mà bạn muốn đánh số, ví dụ:,
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__ tương đương với Java?
- 2. Tương đương với `__FILE__`,` __LINE__` trong bash
- 3. Tương đương Haskell của C __LINE__
- 4. Visual C++ tương đương với __FILE__, __LINE__ và __PRETTY_FUNCTION__
- 5. Javascript tương đương với $ ('body')
- 6. Javascript - phát nổ tương đương?
- 7. Tương đương với gì .get trong javascript?
- 8. Javascript toFixed tương đương trong java
- 9. X-mục tiêu-C: Tương đương với __FILE__ và __LINE__ từ C/C++?
- 10. Javascript tương đương với strtotime của php()?
- 11. Python dir() tương đương với JavaScript?
- 12. Tương đương Javascript cho chiều rộng jquery()
- 13. JavaScript tương đương với PHP preg_replace
- 14. Javascript tương đương với .NET DateTime.Parse
- 15. ruby / ray tương đương với javascript decodeURIComponent?
- 16. Javascript Tương đương với C# LINQ Chọn
- 17. Javascript tương đương với urldecode của php()
- 18. Java tương đương với String.match JavaScript của()
- 19. python tương đương tương đương
- 20. Tính năng __LINE__ trong Groovy
- 21. console.memory tương đương trong Firefox?
- 22. Javascript "var obj = new Object" Tương đương trong C#
- 23. tương đương với toán tử javascript || trong scala
- 24. Có gì tương đương với Thread.sleep() của Java trong JavaScript?
- 25. Có một ngày tương đương PHP() trong javascript/jquery không?
- 26. Tương đương với thư mục Python trong Javascript
- 27. pdb.set_trace() tương đương trong trình duyệt web javascript?
- 28. Ghi đè so sánh tương đương trong Javascript
- 29. Tương đương với Ruby Enumerable # each_slice trong Javascript?
- 30. Tương đương với System.out.println() của Java trong Javascript là gì?
trình duyệt mà thêm một vết đống lỗi đối tượng cũng có thể phơi bày một 'tài sản lineNumber' trực tiếp - không cần phân tích có ... – Christoph