Mọi ngôn ngữ đều có thể được biên dịch và diễn giải. Trong cả hai trường hợp, một phần mềm phải đọc mã nguồn, tách nó ra, phân tích nó, vv để kiểm tra các yêu cầu nhất định và sau đó gán một ý nghĩa cho mọi phần của chương trình. Sự khác biệt duy nhất là trình biên dịch sau đó tiến hành tạo mã với (gần như) cùng ý nghĩa trong một ngôn ngữ khác (mã hóa JVM, hoặc JavaScript, hoặc mã máy, hoặc cái gì đó hoàn toàn khác) trong khi trình thông dịch thực hiện nghĩa của chương trình ngay lập tức.
Bây giờ, trong thực tế, nó đơn giản và phức tạp hơn.Nó đơn giản hơn trong nhiều ngôn ngữ cho vay tốt hơn với một trong hai ngôn ngữ - Java được đánh máy tĩnh và có ít động lực về ý nghĩa của một chương trình, do đó bạn có thể biên dịch nó và do đó thực hiện một số công việc cần thực hiện tại thời gian chạy. JavaScript được nhập động và bạn không thể quyết định nhiều thứ (chẳng hạn như liệu + là bổ sung hay nối) cho đến khi chạy, do đó việc biên dịch không đủ khả năng cho bạn hiệu suất. Tuy nhiên, một sự pha trộn của trình biên dịch và thông dịch (biên dịch để đại diện trung gian đơn giản, sau đó giải thích và/hoặc biên dịch) đang ngày càng phổ biến trong việc triển khai ngôn ngữ động. Và sau đó có thực tế là việc triển khai JavaScript hiện đại làm biên dịch và trên thực tế, động cơ V8 không bao giờ diễn giải bất cứ điều gì.
Javascript được diễn giải bởi trình duyệt, không phải bởi phần cứng thực tế của máy tính (như C assembly) cho một. – thatidiotguy
@thatidiotguy wat. JavaScript hiếm khi được giải thích những ngày này (V8 của Chrome nổi tiếng thậm chí không * có * một thông dịch viên), "C lắp ráp" không có ý nghĩa gì cả, và mã lắp ráp không được thực hiện ở tất cả, nó chỉ đơn giản là biến thành mã máy. Mặc dù tôi phải cung cấp cho bạn đạo cụ để thực hiện mã máy cũng chỉ được diễn giải vào cuối ngày. – delnan
bản sao có thể có của [Ngôn ngữ biên dịch so với phiên dịch] (http://stackoverflow.com/questions/3265357/compiled-vs-interpreted-languages) – jbabey