《javascript 高級程序設計》學習總結 三(1)
引言:任何語言的核心都必然會描述這門語言的最基本的工作原理,而描述的內容通常都要涉及這門語言的語法、操作符、數據類型、內置功能等用於構建復雜解決方案的基本概念。 今天我就這些基本的概念開始進行總結,由於有一些內容實在過於基礎我就不重復贅述(這個總結並不適用於沒學過JS的小夥伴看),而且基礎概念的內容也很長,這裏的篇幅也會 長一點,甚至下一個篇幅也有可能繼續是這個內容,但是我會盡自己的能力去將總結的內容精簡、更好的記錄呈現出來。
區分大小寫與關鍵字:
要理解第一個概念就是ECMAScript中的一切(變量、函數名和操作符)都區分大小寫例如:test 與 Test是不一樣的,且在命名時一定要註意不要采用關鍵字(JavaScript關鍵字)。
標識符:
所謂標識符就是指變量、函數、屬性的名字,或者函數的參數。其規則是:第一個字符必須是一個字符、下劃線、或者一個美元符號($),而其他的字符可以是字母、下劃線、美元符號或數字。按照慣例,ECMAScript 標識符采用駝峰大小寫格式,即第一個字母小寫第二個大寫(myTest)。雖然這不是強制必須,但是為了代碼的優美,我個人還是比較推薦用這樣的方式。
嚴格模式:
ECMAScript 5 引入了嚴格模式(strict model)的概念。顧名思義,嚴格模式就是為JavaScript 定義了一種不同的解析與執行模型(更規範,嚴謹)。在這種模式下ECMAScript 3中一些不確定的行為將得到處理。這裏我就不多贅述,詳情可以查看前面的鏈接,而後面的總結我也碰到嚴格模式下的各類情況討論。那麽進入嚴格模式的方式是:要在整個腳本中啟用嚴格模式的話,可以在頂部添加 “use strict”。在函數采用嚴格模式:
function a(){
"use strict";
------函數體---
}
關鍵字與保留字:
關鍵字與保留字(點擊查看)
沒有var 聲明的變量:
例如: function a(){
message="hi"; (沒有用var 聲明,會變成全局變量)。
}
test();
aler(message); // hi
這裏省略了 var , message就成了全局變量,只要調用一次test(),就可以在函數外部任何地方可以訪問到這個變量 但是這樣的做法並不推薦,因為:1、局部作用域中定義的全部變量很難維護。 2、如果有意的忽略var 操作符,也會由於相應變量不會馬上有定義而導致不必要的混亂,未經聲明的變量賦值在嚴格模式下拋出 referenceError (引用錯誤, 對象表明一個不存在的變量被引用。)錯誤。(後面的總結會講到關於JavaScript的變量與函數在執行前先會進行一個“ 變量 / 函數提升”)。
數據類型:
ECMAScript 中有種簡單的數據類型: Undefined 、 Null 、Boolean 、Number 、String。
typeof 操作符 :
這是一個經常使用到的操作符,其作用就是檢測給定變量的數據類型。有時候 typeof 操作符會返回一些令人迷惑,但是技術上正確的值,比如 (typeof null )會返回 object ,因為null 是一個空的引用對象。Safari 5及之前的版本,chrome 7 以及之前的版本會對正則表達式返回 function. 而其他瀏覽器這種情況下返回 object.
Undefined 與Null 的區別:
因為有時候我們碰到 (null == undefined 結果是true),這時候就會有人認為這兩個是對等的關系,但是實質上,這二者的概念是不同的,如果您使用 (null === undefined 返回 false),就可以看出了,二者的類型是不同的。null 是object ,如果 定義的變量準備將來用於保存對象,那麽最好將變量初始化為null 而不是其他的值。其實從字面路基上我們也可以看出不同,undefined 更多的可以是指一個變量聲明但是沒有定義。而null 則是一個對象是空(指針是空)這麽一來,二者其實也已經很明顯區分開來。
-----------------------------------------------------------------------------------
本章完,下一章繼續對基礎語法,數據類型等概念進行總結。
(這一章中,我的總結還是偏於基礎了,而且也有很多知識點我用了鏈接的方式,比如"保留字。關鍵字”那裏。不是說這些知識點不重要,而是的確其知識點量太多了,我再寫出來不一定比別人總結的好,也還可能把排版弄亂讓閱讀體驗不愉快。所以我希望閱讀到的小夥伴,還是應給點擊鏈接查看一下,在對自己的知識點進行梳理。關於這一塊知識點的總結還是比較多的,有一些我實在無法進行客觀的認知,即我到底應該總結成什麽樣子,所以只能按照自己認為的進行總結。之後我也會對自己所寫的東西進行更多的慢慢修改。畢竟人也是在不斷地進步的,希望能把自己的博客寫好,讓自己學習的同時,也能讓看到我的博客的人看的愉快一些)。
《javascript 高級程序設計》學習總結 三(1)