ClojureScript نسخهای از زبان برنامهنویسی Clojure است که در JavaScript کامپایل میشود و یک زبان برنامهنویسی فانکشنالِ پایدار و پویا با مجموعهای غنی از دیتا استراکچرهای غیرقابلتغییر است. هدف اصلی از توسعهٔ این زبان، تسهیل فرآیند ساخت اپلیکیشنهای پیچیده با یک طراحی ساده است.
در واقع، کلوژراسکریپت یک Dialect از زبان برنامهنویسی Lisp است و یک زبان همهکاره با تأکید بر شیوۀ برنامهنویسی فانکشنال (تابعمحور) است که در جاوااسکریپت اجرا میشود (در اکوسیستم زبان برنامهنویسی Lisp، اکثر زبانهایی که از سینتکس دستورات و مفهوم مشابه این زبان استفاده میکنند به عنوان یک Dialect از این زبان در نظر گرفته میشوند.)
کلوژراسکریپت یک زبان مدرن، فانکشنال و مبتنی بر دیتا اسکتراکچرهای غیرقابلتغییر با یک لایبرری استاندارد عالی است که باندلهای جامع و یکپارچۀ جاوااسکریپت را کامپایل میکند. همچنین کلوژراسکریپت بر اساس زبان برنامهنویسی Clojure، ترکیبی از ظرافت و قابلیت Metaprogramming زبان Lisp را به اکوسیستم جاوااسکریپت اضافه میکند (اصلاح Metaprogramming یک روش برنامهنویسی است که در آن برنامههای کامپیوتری توانایی پردازش سایر برنامهها را به عنوان دادههای خود دارند؛ این بدان معنا است که یک برنامه را میتوان برای خواندن، تولید، آنالیز یا تبدیل به برنامههای دیگر طراحی کرد. حتی یک برنامۀ در حال اجرا میتواند در صورت نیاز سورسکد خود را تغییر دهد!) به عنوان نمونه سورسکد این زبان داریم:
(defn transform* [person]
(-> person
(assoc :hair-color :gray)
(update :age inc)))
(defn calculate* []
(->> (range 10)
(filter odd? ,,,)
(map #(* % %) ,,,)
(reduce + ,,,)))
(as-> [:foo :bar] v
(map name v)
(first v)
(.substring v 1))
همانطور که مشاهده میشود، ClojureScript سینتکسی مشابه Clojure اما در عین حال یکسری به اصطلاح Host API و محیط اجرای متفاوت را دارا است.