js為什麼叫js?

面試被問到這個,生無可戀啊,不知道該如何回答。沒想到有這個問題。


最權威的解釋應該是 Netscape 公司關於 JavaScript 的發行說明(release note)了,但是這些頁面都太過古老,已經消失在了歷史的長河。但是有一個神奇的網站記錄著互聯網上的大部分歷史頁面 web.archive.org

於是我們找到了 JavaScript 的 1995 年 12 月 4 號改名的文章 netscape and sun announce javascript, the open, cross-platform object scripting language for enterprise networks and the internet —— 28 industry-leading companies to endorse javascript as a complement to java for easy online application development。


W3C 也有一篇小短文:A Short History of JavaScript

JavaScript, not to be confused with Java, was created in 10 days in May 1995 by Brendan Eich, then working at Netscape and now of Mozilla. JavaScript was not always known as JavaScript: the original name was Mocha, a name chosen by Marc Andreessen, founder of Netscape. In September of 1995 the name was changed to LiveScript, then in December of the same year, upon receiving a trademark license from Sun, the name JavaScript was adopted. This was somewhat of a marketing move at the time, with Java being very popular around then.

  • 1995 年 Brendan Eich 花了 10 天時間開發出了一門腳本語言
  • Marc Andreessen 給他起名為 Mocha
  • 1995 年 9 月,改名為 LiveScript
  • 1995 年12 月,收到 SUN 公司的商標許可,改名為 JavaScript

原因是 Java being very popular。


我做個排期,有時間給大家講講 JavaScript 的歷史:dev-reading/fe


那時候java是一個大IP。

叫javascript可以蹭熱度,別人一搜java,第二條是javascript


因為追潮流 當時java火 所以改名javascript

但是這是網景的叫法

微軟叫 jScript


阮大神的網路日誌介紹

"1994年,網景公司(Netscape)發布了Navigator瀏覽器0.9版。這是歷史上第一個比較成熟的網路瀏覽器,轟動一時。但是,這個版本的瀏覽器只能用來瀏覽,不具備與訪問者互動的力。網景公司急需一種網頁腳本語言,使得瀏覽器可以與網頁互動。"

網頁腳本語言到底是什麼語言?網景公司當時有兩個選擇:一個是採用現有的語言,比如Perl、Python、Tcl、Scheme等等,允許它們直接嵌入網頁;另一個是發明一種全新的語言。這兩個選擇各有利弊。第一個選擇,有利於充分利用現有代碼和程序員資源,推廣起來比較容易;第二個選擇,有利於開發出完全適用的語言,實現起來比較容易。到底採用哪一個選擇,網景公司內部爭執不下,管理層一時難以下定決心。

就在這時,發生了另外一件大事:1995年Sun公司將Oak語言改名為Java,正式向市場推出。Sun公司大肆宣傳,許諾這種語言可以"一次編寫,到處運行"(Write Once, Run Anywhere),它看上去很可能成為未來的主宰。網景公司動了心,決定與Sun公司結成聯盟。它不僅允許Java程序以applet(小程序)的形式,直接在瀏覽器中運行;甚至還考慮直接將Java作為腳本語言嵌入網頁,只是因為這樣會使HTML網頁過於複雜,後來才不得不放棄。總之,當時的形勢就是,網景公司的整個管理層,都是Java語言的信徒,Sun公司完全介入網頁腳本語言的決策。

因此,Javascript後來就是網景和Sun兩家公司一起攜手推向市場的,這種語言被命名為"Java+script"並不是偶然的。

此時,34歲的系統程序員Brendan Eich登場了。1995年4月,網景公司錄用了他。Brendan Eich的主要方向和興趣是函數式編程,網景公司招聘他的目的,是研究將Scheme語言作為網頁腳本語言的可能性。Brendan Eich本人也是這樣想的,以為進入新公司後,會主要與Scheme語言打交道。僅僅一個月之後,1995年5月,網景公司做出決策,未來的網頁腳本語言必須"看上去與Java足夠相似",但是比Java簡單,使得非專業的網頁作者也能很快上手。這個決策實際上將Perl、Python、Tcl、Scheme等非面向對象編程的語言都排除在外了。Brendan Eich被指定為這種"簡化版Java語言"的設計師。但是,他對Java一點興趣也沒有。為了應付公司安排的任務,他只用10天時間就把Javascript設計出來了。由於設計時間太短,語言的一些細節考慮得不夠嚴謹,導致後來很長一段時間,Javascript寫出來的程序混亂不堪。如果Brendan Eich預見到,未來這種語言會成為互聯網第一大語言,全世界有幾百萬學習者,他會不會多花一點時間呢?

總的來說,他的設計思路是這樣的:(1)借鑒C語言的基本語法;

(2)借鑒Java語言的數據類型和內存管理;

(3)借鑒Scheme語言,將函數提升到"第一等公民"(first class)的地位;(4)借鑒Self語言,使用基於原型(prototype)的繼承機制。

所以,Javascript語言實際上是兩種語言風格的混合產物----(簡化的)函數式編程+(簡化的)面向對象編程。這是由Brendan Eich(函數式編程)與網景公司(面向對象編程)共同決定的。

如果不是公司的決策,Brendan Eich絕不可能把Java作為Javascript設計的原型。作為設計者,他一點也不喜歡自己的這個作品:"與其說我愛Javascript,不如說我恨它。它是C語言和Self語言一夜情的產物。十八世紀英國文學家約翰遜博士說得好:"它的優秀之處並非原創,它的原創之處並不優秀。"(the part that is good is not original, and the part that is original is not good.)"


只要你想,叫它ECMA Script也可以


因為當時Java很火,為了獲得更多的關注取名JavaScript,沒成想真的因為這個名稱火了。其實他跟Java半毛錢關係都沒有。

個人Github:xingkongbj/study_web 內容豐富,有深入講解


好久之前看到的,就是因為當時Java很火,JS蹭熱門去了。


現在的人什麼都生無可戀……還好面試官沒有問你:「請簡述一下JavaScript JScript和ECMAScript的區別」

這種[百度一下,你就知道]的問題,需要問么?


你爹為什麼叫爹 一樣的問題


我來寫一個經典的回答,你回答:

假如js叫ms(或者其它), 那麼你肯定會問:ms為啥叫ms呀?那它總得有個名字吧?

當別人問你為啥井蓋是圓的時候,你可以懟他:井蓋要是方的,你又會問我為啥是方的, 老勞資一井蓋拍死你


直接懟面試官


1995年,當時在網景公司就職的布蘭登·艾克正為Netscape Navigator 2.0瀏覽器開發的一門名為LiveScript的腳本語言,後來網景公司與昇陽電腦公司組成的開發聯盟為了讓這門語言搭上java這個編程語言「熱詞」,將其臨時改名為「JavaScript」。

JavaScript推出後在瀏覽器上大獲成功,微軟公司在不久後就為Internet Explorer 3.0瀏覽器推出了JScript,以與處於市場領導地位的網景產品同台競爭。JScript也是一種JavaScript實現,這兩個JavaScript語言版本在瀏覽器端共存意味著語言標準化的缺失,對這門語言進行標準化被提上了日程,在1997年,由網景、昇陽、微軟、寶藍等公司組織及個人組成的技術委員會在ECMA(歐洲計算機製造商協會)確定定義了一種名叫ECMAScript的新腳本語言標準[7],規範名為ECMA-262。JavaScript成為了ECMAScript的實現之一[8]。

——來自維基


簡單來說JavaScript的作者是為了蹭Java的熱度。用作者自己的話說 「Netscape和Sun簽署了許可協議,就誕生了JavaScript。當初想法是讓它成為編譯語言Java的一種補充的腳本語言。「。

我理解面試官是為了考察你對JS的歷史是否了解吧。


推薦閱讀:

中等規模的網站管理後台用什麼js框架好呢?
Bootstrap 3 有哪些改進?
因為什麼原因你開始從事web前端開發?
在線代碼編輯器/IDE是如何實現的?

TAG:Web開發 | JavaScript | 前端工程師 | 程序員面試 | 精通web前端 |