Czy JavaScript jest kompilowany czy interpretowany? [Zamknięte]

151

Czy Javascript można nazwać językiem wyłącznie interpretowanym? A może ma też jakiś skompilowany smak? Czy ktoś mógłby wskazać przyczyny obu rzeczy, niezależnie od tego, co jest prawdą.

netemp
źródło
31
Prosimy o rozważenie dodania komentarza podczas głosowania przeciw, aby można było poprawić pytanie. Dzięki.
netemp
2
@Blindy: czy wspominasz, że nie powinno w ogóle istnieć rozróżnienie między kompilacją a interpretacją?
netemp
23
5 głosów „przeciw” i ani jednego komentarza, w którym nie podano, dlaczego tak było. Trochę rozczarowujące.
netemp
1
Może to być powszechny sposób klasyfikowania języków, ale to nie czyni go bardziej użytecznym.
1
@NetEmp (uwaga, nie głosowałem w dół - ale głosowałem za migracją do programistów) To jest niewłaściwe miejsce do zadawania tego typu pytań - przeczytaj FAQ na temat tego, jakie pytania tutaj zadać - powinno to być w sekcji programowania StackExchange
Manse

Odpowiedzi:

72

Idź i przeczytaj odpowiedzi na to pytanie

/software/138521/is-javascript-interpreted-by-design

Odpowiedź, którą zaakceptowałem, jest doskonała i powinna pomóc odpowiedzieć na Twoje pytanie.

Osobiście jestem nieco ostrożny w kwestii nazywania języka jako interpretowanego lub kompilowanego. To decyzja dotycząca implementacji, a nie część specyfikacji języka. Jeśli chcesz porozmawiać o skompilowanym lub zinterpretowanym JavaScript, poproś o to w kontekście rzeczywistej implementacji specyfikacji języka.

Matt Esch
źródło
19

JavaScript jest interpretowany w czasie wykonywania przez przeglądarkę klienta. Istnieje jednak narzędzie zwane Rhino JavaScript Compiler, które podobno kompiluje JavaScript do plików klas Java.

HellaMad
źródło
7
A co z V8 i tym podobnymi?
25
V8 nigdy nie zawierał czegoś takiego jak interpreter, a większość głównych silników JS zawiera już kompilatory JIT. Dlatego stwierdzenie, że „JavaScript jest interpretowany” jest oczywiście błędne (a może twoja definicja interpretera / kompilatora jest taka).
@delnan: Dzięki za wgląd w V8. Tak więc JS nie jest językiem wyłącznie interpretowanym.
netemp
2
Kompilator JavaScript Rhino. Wiesz, jeśli chcesz, aby twój język interpretowany był interpretowany przez inny język interpretowany.
Trevor Hickey
1
Jak powiedzieli inni, od jakiegoś czasu nie jest to już prawdą. Tak, na początku można było powiedzieć, że JavaScript był interpretowany, ale od tamtej pory przeszedł bardzo długą drogę .
John Weisz