什么是JavaScript?
JavaScript
是一種直譯式
腳本語言,一種輕量級
的腳本語言
。
什么是腳本語言?
Script language
指的是它不具備開發操作系統的能力,而是只用來編寫控制其他程序的語言
。
JavaScript
是一種嵌入式(embedded)
語言。它本身提供的核心語法並不是很多,更多的功能需要依靠宿主環境(host)
提供。So,這門語言適合嵌入更大型的應用程序環境中,去調用宿主環境提供的底層API
。
目前常見的JavaScript
宿主環境有瀏覽器
和服務器環境Node
。
如果從語法
的層面來看,JavaScript
是一門對象模型語言
。各種宿主環境通過這個模型,描述自己的功能和操作接口,從而通過JavaScript
控制這些功能。
同時,JavaScript
還支持函數式編程
。所以在學習的過程中,我們需要更多的去了解和學習一些不同解決問題的方法。
JavaScript
的核心語法部分包括基本語法構造
和標准庫
,當然如果學習這門語言還需要學習不同的宿主環境
提供的一些其他API
[這種API通常情況下只能在該宿主環境下使用],從而在需要的時候方便調用。
例如經常涉及的宿主環境瀏覽器
,它提供的額外的API
可以分成三大類:
- 瀏覽器控制類:操作瀏覽器
- DOM類: 操作網頁的各種元素
- Web類: 實現互聯網的各種功能
而如果你的宿主環境
是Node
這種服務器環境
,那么就會提供各種操作系統的API
,例如文件操作API
、網絡通信相關的API
等等。
JavaScript的發展
為什么選擇學習JavaScript
- 對瀏覽器的操作能力
- 更多的應用領域
- 對初學者更加的友好
- 日益強大的性能
對瀏覽器的操作能力:
JavaScript
誕生之初,就是為了作為瀏覽器內置腳本語言
,讓前端開發者能夠操作瀏覽器。雖然在之前出現過很多類似的腳本語言,但是目前來講,JavaScript
是唯一的一種通用的瀏覽器腳本語言,所有的瀏覽器都支持。
開發者通過JavaScript
可以讓網頁實現更多的展示效果,創造更好的用戶體驗。
更多的應用領域:
隨着近些年的發展,
JavaScript
這門語言從最開始的只能使用在瀏覽器
,漸漸的擴散到了服務端
。
1、瀏覽器的平台化
隨着 HTML5
的出現,瀏覽器本身的功能越來越強,不再僅僅能瀏覽網頁,而是越來越像一個平台,JavaScript
因此得以調用許多系統功能,比如操作本地文件、操作圖片、調用攝像頭和麥克風等等。這使得 JavaScript
可以完成許多以前無法想象的事情。
2、Node
Node
項目使得 JavaScript
可以用於開發服務器端的大型項目,網站的前后端都用 JavaScript
開發已經成為了現實。有些嵌入式平台(Raspberry Pi
)能夠安裝 Node
,於是 JavaScript
就能為這些平台開發應用程序。
3、數據庫操作
JavaScript
甚至也可以用來操作數據庫。NoSQL
數據庫這個概念,本身就是在 JSON(JavaScript Object Notation)
格式的基礎上誕生的,大部分 NoSQL
數據庫允許 JavaScript
直接操作。基於SQL
語言的開源數據庫 PostgreSQL
支持 JavaScript
作為操作語言,可以部分取代 SQL
查詢語言。
4、移動平台開發
JavaScript
也正在成為手機應用的開發語言。一般來說,安卓平台使用 Java
語言開發,iOS
平台使用 Objective-C
或 Swift
語言開發。許多人正在努力,讓 JavaScript
成為各個平台的通用開發語言。
PhoneGap
項目就是將 JavaScript
和 HTML5
打包在一個容器之中,使得它能同時在 iOS
和安卓上運行。Facebook
公司的 React Native
項目則是將 JavaScript
寫的組件,編譯成原生組件,從而使它們具備優秀的性能。
Mozilla
基金會的手機操作系統 Firefox OS
,更是直接將 JavaScript
作為操作系統的平台語言,但是很可惜這個項目沒有成功。
5、內嵌腳本語言
越來越多的應用程序,將 JavaScript
作為內嵌的腳本語言,比如 Adobe
公司的著名 PDF 閱讀器
Acrobat
、Linux 桌面環境 GNOME 3
。
6、跨平台的桌面應用程序
Chromium OS
、Windows 8
等操作系統直接支持 JavaScript
編寫應用程序。Mozilla
的 Open Web Apps
項目、Google
的 Chrome App 項目、GitHub
的 Electron 項目、以及 TideSDK 項目,都可以用來編寫運行於 Windows
、Mac OS
和 Android
等多個桌面平台的程序,不依賴瀏覽器。
著名程序員 Jeff Atwood 甚至提出了一條 “Atwood 定律”:
“所有可以用 JavaScript 編寫的程序,最終都會出現 JavaScript 的版本。”(Any application that can be written in JavaScript will eventually be written in JavaScript.)
對初學者更加的友好:
1、可以隨時隨地的使用瀏覽器進行開發練習。
2、簡單化的語法。即使復雜的語法你沒有掌握,也可以通過簡單的語法實現。
3、與C/C++
、Java
的相似性。如果你學過這兩門語言,那么再來學習JavaScript
可以說將會很簡單。
日益強大的性能:
1、靈活的語法。
JavaScript
既支持類似C
語言清晰的過程式編程,也支持靈活的函數式編程
,可以用來寫並發處理(concurrent)
。這些語法特性已經被證明非常強大,可以用於許多場合,尤其適用異步編程
。
JavaScript
的所有值都是對象,這為程序員提供了靈活性和便利性。因為你可以很方便地、按照需要隨時創造數據結構,不用進行麻煩的預定義。
JavaScript
的標准還在快速進化中,並不斷合理化,添加更適用的語法特性。
2、支持編譯運行
JavaScript
語言本身,雖然是一種解釋型語言
,但是在現代瀏覽器中,JavaScript
都是編譯后運行。程序會被高度優化,運行效率接近二進制程序。而且,JavaScript
引擎正在快速發展,性能將越來越好。
此外,還有一種 WebAssembly
格式,它是 JavaScript
引擎的中間碼格式,全部都是二進制代碼。由於跳過了編譯步驟,可以達到接近原生二進制代碼的運行速度。各種語言(主要是 C
和 C++
)通過編譯成 WebAssembly
,就可以在瀏覽器里面運行。
3、事件驅動和非阻塞設計
JavaScript
程序可以采用事件驅動(event-driven
)和非阻塞式(non-blocking
)設計,在服務器端適合高並發環境,普通的硬件就可以承受很大的訪問量。
JavaScript和H5
JavaScript
這門語言,本身是一門用來在瀏覽器當中做交互效果的腳本語言
。雖然現在跟當年的環境發生了極大的變化,但是這項功能仍然還保留在JavaScript
的身體里。
而H5
如果從狹義的角度講,可以解釋為html的第五代產品
,html
主要負責頁面的結構,而JavaScript
則需要和html
相互配合,負責頁面的交互效果。
如果從廣義的角度來說,可以解釋為新一代的富客戶端解決方案
,而對於這種開發需求,JavaScript
更是一個好的伙伴。
同時,如果單純的從語言本身來看,大家所說的H5
開發,大概可以約等於Html+Css+JavaScript
。
如果從技術層面看,到了H5
的年代,提供給了JavaScript
更多的API
,讓開發變得更加靈活。
js(行為):
我們常說,HTML負責頁面的結構,CSS則是頁面的樣式,而js是頁面上的行為,負責與用戶的交互。
ES:瀏覽器遵循的標准;
BOM:瀏覽器對象模型;
DOM:文檔對象模型。
在js中,常用的打印語句有:
1、alert();打印到彈出框;
2、document.write();打印到頁面;
3、console.log();打印到控制台;
js中的數據類型:
字符型:string(s);
數值型:number(n);
布爾型:Boolean(b);
未賦值:undefined;
對象:object(o);
數組:array(a);
函數:function(fn);
......
數組與函數的本質也是對象。
可以通過typeof判斷數據類型,數組與函數的數據類型是object。
變量的命名規則:
1、只能以字母、_、$開頭;
2、語義化,以數據類型開頭,使用小駝峰命名方式;
3、不用關鍵字和保留字命名。
小駝峰命名方式:第一個單詞小寫,后面的單詞首字母全部大寫。
運算符:
算數運算符:+、-、*、/、%;
關系運算符:>、<、>=、<=、==、===、!=;
邏輯運算符:||、&&、!;
賦值運算符:=、+=、-=、*=、/=、%=;
自增自減運算符:++,--;