JavaScript歷史學習總結

javascript歷史

1994年網景公司,發佈了 Netscape 瀏覽器,所以急需一門腳本語言,使得網頁能夠和人互動。javascript

1995年網景公司,錄用的 Brendan Eich,讓他擔任這門語言的設計師。html

公司要求這門語言必須看上去「與java足夠類似」,但要比java簡單,要讓非專業的網頁製做者也能很快的上手。java

但 Brendan Eich 對java一點興趣也沒有,他喜歡函數式編程,喜歡scheme語言。編程

他的設計思路大概是這樣的:瀏覽器

  1. 借鑑c語言的基本語法
  2. 借鑑java的數據類型和內存管理
  3. 借鑑scheme語言,將函數提高到「第一等公民」的地位
  4. 借鑑self語言,使用基於原型prototype的繼承機制。

總之javascript是其實是兩門語言風格的混合產物——簡化的函數式編程和簡化的面向對象編程。函數式編程

因而爲了應付公司的安排任務,他只用了10天的時間就將它設計出來了。函數

因爲時間倉促,語言的設計有不少缺陷,致使用javascript寫出來的程序混亂不堪。prototype

javascript缺陷

nullundefined

只有在javascript這門語言中同時存在兩個空。設計

nullundefined都表示不存在,用法都同樣。code

通常在定義基本類型時,沒有賦值,會是undefined

let a 
console.log(a)      //undefined

定義Object類型時,會使用null

let b = null

全局變量

未定義的變量能夠直接使用,在全部模塊中都是可見的。

function fn(){
    a = 1
}
fn()
console.log(a)      //1

return後面不能換行

換行和空格在javascript中沒有實際的意義。

let a 

=

1

//能夠聲明

但在return後面不能出現換行

function fn(){
    return
    1
}
fn()    // undefined

類型自動轉換

javascript中聲明的變量,後面賦值時能夠隨意更改類型。

let a = 1
typeof a        //number
a = '2'
typeof a        //string

在使用操做符時,能夠不知不覺的進行類型轉換。

let a = '1'
+a
typeof      //number

這種運算也大大加重了運算的複雜性。

=====

==在判斷兩個值是否相等的時,會自動發生類型轉換,獲得的結果每每和你期待的不一致。

形成缺陷的客觀緣由

javascript還有不少這樣的設計缺陷,形成這些設計缺陷主要有三個客觀緣由

  1. 設計倉促,javascript設計只用了三天
  2. 沒有先例,javascript是惟一同時使用函數式編程和麪向對象變成的語言
  3. 過早標準化,從定稿到標準化只用了一年半的時間,對比c語言,用了將近20年才標準化。

這三個緣由致使了javascript不少缺陷,但並不妨礙它成爲最有價值的語言,它是網頁編程的惟一語言。

參考文章:

Javascript誕生記
Javascript的10個設計缺陷

相關文章
相關標籤/搜索