Tôi vừa xem qua mã nguồn ở đây: http://js-dos.com/games/doom2.exe.html và nhận thấy một vài điều:Mục đích của điều kiện eval này là gì?
if (typeof Module === 'undefined')
{
Module = eval('(function() {try { return Module || {} } catch(e) { return {} }})()');
}
- Chức năng Mô-đun được định nghĩa với một thẻ inline kịch bản
- Nó sau đó được khai báo lại với
var
trong inline khác , lần này nó sẽ kiểm tra xem Module có tồn tại hay không.
Câu hỏi của tôi: điểm của tuyên bố Mô-đun với một chức năng cách gọi tự nếu nó chỉ sẽ cố gắng để trả lại Mô-đun lại là gì? Chẳng phải nó đã được chứng minh là nó không tồn tại sao? Tại sao không chỉ khai báo rõ ràng Mô-đun là {}
?
Mã này nằm trên github trong dự án emscripten. Nó đã được thêm vào trong cam kết này: https://github.com/kripken/emscripten/commit/22d510338239c1cf33136392c77a9b3d7d2ce2bc Họ đã di chuyển ra khỏi khai báo rõ ràng cho câu lệnh eval, nhưng thông điệp cam kết không rõ tại sao! Tôi đã thêm emscripten làm thẻ, sau đó một người nào đó từ dự án, hoặc ai biết rõ nó, có thể phát hiện ra nó và có thể giúp đỡ. – sifriday