JavaScript

肇始於網景

1993年，伊利諾大學厄巴納-香檳分校的國家超級電腦應用中心（NCSA）發表了NCSA Mosaic，這是最早流行的圖形介面網頁瀏覽器，它在全球資訊網的普及上發揮了重要作用。1994年，一家名為Mosaic Communications的公司在加州山景城成立了，並雇用了許多原來的NCSA Mosaic開發者用來開發Mosaic Netscape，該公司的目標是取代NCSA Mosaic成為世界第一的網頁瀏覽器。第一個版本的網頁瀏覽器Mosaic Netscape 0.9於1994年底發布。在四個月內，已經佔據了四分之三的瀏覽器市場，並成為1990年代網際網路的主要瀏覽器。為避免NCSA的商標所有權問題，該瀏覽器於同年更名為Netscape Navigator，該公司命名為Netscape Communications。網景預見到網路需要變得更動態。公司的創始人馬克·安德森認為HTML需要一種膠水語言，讓網頁設計師和兼職程式設計師可以很容易地使用它來組裝圖片和外掛程式之類的元件，且程式碼可以直接編寫在網頁標記中。
1995年，網景招募了布蘭登·艾克，目標是把Scheme語言嵌入到Netscape Navigator瀏覽器當中。但更早之前，網景已經跟昇陽合作在Netscape Navigator中支援Java，這時網景內部產生激烈的爭論。後來網景決定發明一種與Java搭配使用的輔助手稿語言並且語法上有些類似，這個決策導致排除了採用現有的語言，例如Perl、Python、Tcl或Scheme。為了在其他競爭提案中捍衛JavaScript這個想法，公司需要有一個可以運作的原型。艾克在1995年5月僅花了十天時間就把原型設計出來了。
最初命名為Mocha，1995年9月在Netscape Navigator 2.0的Beta版中改名為LiveScript，同年12月，Netscape Navigator 2.0 Beta 3中部署時被重新命名為JavaScript，當時網景公司與昇陽電腦公司組成的開發聯盟為了讓這門語言搭上Java這個程式語言「熱詞」，因此將其臨時改名為JavaScript，日後這成為大眾對這門語言有諸多誤解的原因之一。

微軟採納

JavaScript推出後在瀏覽器上大獲成功，微軟公司在不久後就為Internet Explorer 3瀏覽器推出了JScript，以與處於市場領導地位的網景產品同台競爭。JScript也是一種JavaScript實作，這兩個JavaScript語言版本在瀏覽器端共存意味著語言標準化的缺失，發展初期，JavaScript的標準並未確定，同期有網景的JavaScript，微軟的JScript雙峰並峙。除此之外，微軟也在網頁技術上加入了不少專屬物件，使不少網頁使用非微軟平台及瀏覽器無法正常顯示，導致在瀏覽器大戰期間網頁設計者通常會把「用Netscape可達到最佳效果」或「用IE可達到最佳效果」的標誌放在首頁。隨著Internet Explorer 4的發布，微軟引入了動態HTML的概念，但語言實現和不同專有化的文件物件模型的差異仍然存在，成為網路上普及使用JavaScript的阻礙。

標準化

1996年11月，網景正式向ECMA（歐洲計算機製造商協會）提交語言標準。1997年6月，ECMA以JavaScript語言為基礎制定了ECMAScript標準規範ECMA-262。JavaScript成為了ECMAScript最著名的實現之一。除此之外，ActionScript和JScript也都是ECMAScript規範的實作語言。儘管JavaScript作為給非程式人員的手稿語言，而非作為給程式人員的程式語言來推廣和宣傳，但是JavaScript具有非常豐富的特性。

特性

不同於伺服器端手稿語言，例如PHP與ASP，JavaScript主要被作為用戶端手稿語言在用戶的瀏覽器上運行，不需要伺服器的支援。所以在早期程式設計師比較青睞於JavaScript以減少對伺服器的負擔，而與此同時也帶來另一個問題：安全性。而隨著伺服器變得強大，現在的程式員更喜歡運行於伺服器端的指令碼以保證安全，但JavaScript仍然以其跨平台、容易上手等優勢大行其道。同時，有些特殊功能（如AJAX）必須依賴JavaScript在用戶端進行支援。隨著引擎如V8和框架如Node.js的發展，及其事件驅動及異步IO等特性，JavaScript逐漸被用來編寫伺服器端程式。且在近幾年中，Node.js的出世，讓JavaScript也具有了一定的伺服器功能，且在某些方面比PHP的效果更為顯著。

指令式與結構化

JavaScript從支援許多C語言的結構化編程語法（例如if條件語句、while迴圈、switch語句、do-while迴圈等）。但作用域是一個例外：JavaScript只支援使用var關鍵字來定義變數的函式作用域。ECMAScript加入了let關鍵字來支援塊級作用域，意味著JavaScript現在既支援函式作用域又支援塊級作用域。正如C語言一樣，JavaScript中的表達式和語句是不同的。與C不同，JavaScript支援自動在語句末添加分號。

動態化

正如大部分程式語言，類型與值而不是與變數關聯。例如x變數可以為數值，隨後又可被賦值為字串。JavaScript提供了包括鴨子型別在內的方法來檢測變數類型。

Eval()

Eval() 函式可以直接執行一個JavaScript函式。例如：
eval("alert(\"Message\")");

編程

JavaScript是一種手稿語言，其原始碼在發往用戶端執行之前不需經過編譯，而是將文字格式的字元程式碼發送給瀏覽器由瀏覽器解釋執行。直譯語言的弱點是安全性較差，而且在JavaScript中，如果一條執行不了，那麼下面的語言也無法執行。而其解決辦法就是於使用例外處理try{}catch(){}︰
console.log("a");    //這是正確的console.log("b");    //這是正確的console.logg("c");   //这是错误的，并且到这里会停下来console.log("d");    //這是正確的console.log("e");    //這是正確的/*解決辦法*/try{console.log("a");}catch(e){}    //這是正確的try{console.log("b");}catch(e){}    //這是正確的try{console.logg("c");}catch(e){}   //这是错误的，但是到这里不会停下来，而是跳过try{console.log("d");}catch(e){}    //這是正確的try{console.log("e");}catch(e){}    //這是正確的
JavaScript被歸類為直譯語言，因為目前主流的引擎都是每次執行時載入程式碼並解譯。V8是將所有程式碼解譯後再開始執行，其他引擎則是逐行解譯（SpiderMonkey會將解譯過的指令暫存，以提高效能，稱為即時編譯），但由於V8的核心部份多數用JavaScript撰寫（而SpiderMonkey是用C++），因此在不同的測試上，兩者效能互有優劣。
與其相對應的是編譯語言，例如C語言，以編譯語言編寫的程式在執行之前，必須經過編譯，將程式碼編譯為機器碼，再加以執行。

範例

以下是一個簡單的JavaScript Hello World︰
<!DOCTYPE HTML><html>
    <head>
    <title>簡單的JavaScript Hello World</title>
        <script type="text/javascript">
            document.write("Hello, world!");   // 於瀏覽器視窗內直接顯示
            alert("Hello, world!");            // 開啟對話視窗顯示
            console.log("Hello, world!");      // 於console裡顯示，需要先開啟開發工具控制台
        </script>
    </head>
    <body>
　　　　HTML內容……
    </body></html>
或是在瀏覽器的網址列中使用javascript:，以互動方式表示：
javascript:alert("Hello world!");