私は JavaScript を Lisp とは呼びませんが、私の謙虚な意見では、ほとんどの主流言語 (関数型言語でさえ) よりも Lisp のやり方に似ています。
1 つは、Lisp と同じように、本質的に、REPL によって駆動されるのに適した、型指定されていないラムダ計算に基づく単純な命令型言語です。
次に、リテラル データ (ラムダ式の形式のコードを含む) を JavaScript に埋め込むのは簡単です。これは、そのサブセットが JSON と同等であるためです。これは一般的な Lisp パターンです。
第三に、その値と型のモデルは非常にぎこちないです。すべての値にアイデンティティの概念があるという点で、広義のオブジェクト指向ですが、狭義のほとんどのオブジェクト指向ではありません。Lisp と同様に、オブジェクトは型付けされ、非常に動的です。コードは通常、クラスではなく関数の単位に分割されます。
実際、JavaScript の世界には (多かれ少なかれ) いくつかの最近の開発があり、言語がかなりぎこちなく感じられることがあります。たとえば、jQuery を見てみましょう。私の意見では、CSS セレクターをサブ言語として埋め込むことは、かなり Lisp に似たアプローチです。または、ECMAScript Harmony のメタオブジェクト プロトコルを考えてみましょう。これは、Common Lisp の直接のポートのように見えます (Python や Ruby のメタオブジェクト システムよりもはるかに優れています!)。リストは続きます。
JavaScript にはマクロが欠けており、エディターと統合された REPL の賢明な実装が欠けていますが、これは残念なことです。確かに、他の言語からの影響も非常に顕著です (必ずしも悪い意味ではありません)。それでも、Lisp キャンプと JavaScript キャンプの間にはかなりの量の文化的互換性があります。一部は偶然かもしれませんが (最近の JavaScript JIT コンパイルの台頭など)、一部は体系的ですが、確実に存在します。