Có lý do gì khiến dòng mã này không thành công?Tương tác lạ giữa Chức năng mới và eval
new Function("eval('function foo(){ alert() }'); foo()")()
Nó hiện ra cảnh báo trong Chromium như mong đợi nhưng không thành công trong Firefox (foo không được xác định). Đây có phải là lỗi của Firefox hay có vấn đề gì với mã của tôi không?
Điều này nghe giống như chế độ nghiêm ngặt/không nghiêm ngặt - bạn có _sure_ bạn đã chạy cả hai chế độ này ở chế độ không nghiêm ngặt không? (Hành vi của Chrome) hoặc chế độ nghiêm ngặt (Firefox)? (Cập nhật: nhìn vào spec này có thể là một điều es5 và es2015 (es6)) –
@BenjaminGruenbaum Tôi đã nghĩ về điều đó. Tôi khá chắc chắn rằng tôi chạy cả hai trong chế độ nonstrict. Nhưng chế độ nghiêm ngặt không nên có bất kỳ hiệu ứng nào, vì chức năng mới không nên phản ánh điều đó (không giống như chức năng thông thường). – user2345215
Trong khi điều thú vị là các trình duyệt hoạt động khác nhau, tôi vẫn còn tự hỏi "tại sao chúng ta quan tâm?" XD –