Tôi có chức năng và nội dung của nó dưới dạng chuỗi.thực hiện các chức năng ẩn danh được tạo bằng cách sử dụng JavaScript eval()
var funcStr = "function() { alert('hello'); }";
Bây giờ, tôi thực hiện eval() để thực sự nhận hàm đó trong một biến.
var func = eval(funcStr);
Nếu tôi nhớ không lầm thì trong Chrome và Opera, chỉ cần gọi
func();
gọi hàm và cảnh báo được hiển thị.
Nhưng, trong các trình duyệt khác thì không phải như vậy. không có chuyện gì xảy ra.
Tôi không muốn tranh luận về phương pháp nào là đúng, nhưng làm cách nào tôi có thể thực hiện việc này? Tôi muốn có thể gọi biến(); để thực thi hàm được lưu trữ trong biến đó.
Tôi tự hỏi tại sao bạn cần một hàm ẩn danh được biểu diễn dưới dạng chuỗi ký tự, ngược với việc chỉ đơn giản là có hàm được đặt tên? –
FYI: Tôi đang xác định tập lệnh của riêng mình cho ứng dụng web của mình. Tôi đang viết một thông dịch viên và cần phải xây dựng các hàm JS ngay lập tức và sau đó tạo ra các hàm thực thi thực tế từ chúng. –
Tại sao bạn không viết thông dịch viên theo cách truyền thống? – Breton