摘要:函數式編程最后介紹一下函數式編程。函數式編程是一種歷史悠久,而又在最近頗為熱門的話題。函數式編程在面向對象一詞誕生以前就已經存在,不過它在很長一段時間里都被隱藏于過程式編程面向對象也是過程式編程的一種的概念之下。
2.1 JavaScript特點 總結以下幾個特點:
解釋型語言
類似與C和Java的語法結構
動態語言
基于原型的面向對象
字面量的表現能力
函數式編程
解釋型語言:類似于C和Java的語法結構:解釋型語言直接在運行環境中執行代碼(或者說動態類型語言),一般來說,與編譯型語言相比,解釋型語言開發更為容易。特別是JavaScript,其運行環境是已經普及的瀏覽器,所以能夠很容易嘗試開發。
劣勢在于:運行速度慢于編譯型語言,當然這也是理論上的情況。現在,解釋型語言和編譯型語言這件的界線越來越模糊。編譯型語言在有了足夠快速的編譯器和功能強大的開發環境之后,也能實現和解釋型語言相匹敵的開發難易度。同時,解釋型語言由于使用了JIT(Just In Time)這種能夠在運行中進行編譯的的技術,使得運行速度得以改善。
JavaScript的語法結構與C和Java相似。JavaScript同樣有if或while這類關鍵字,其語法結構也與C和Java類似。他們乍一看很像,因此有這些語言開發經驗的人很容易就能熟悉JavaScript。不過需要注意的是,它們之間的相似性其實并不如表面看起來的那么強。
PS:我既沒接觸過Java也沒敲過C,這種情況對于我想必是崩潰的!:)不過,眾所周知JavaScript是弱類型語言,語法規則不如強類型語言那么嚴格。
動態語言:JavaScript與C和Java所不同的一點在于,JavaScript是一種動態語言,將在之后詳述。但從代碼角度看,動態語言的變量和函數是不指定返回值類型的。(WTF?)。JavaScript之所以被設計成動態語言,和選擇將其設計為解釋型語言的理由一樣,都是優先考慮了開發難易度的結果。對解釋型語言以及動態語言的特性的喜好雖然見仁見智,但語言本身沒有高下優劣之分。
解釋型語言并不少見,現有的較為知名的腳本語言大多都屬于這一類型。不過基于原型的面向對象特性,使得JavaScript有點不同。基于原型的面向對象和基于類的面向對象特性是有所不同的......JavaScript并不是第一個采用基于原型的面向對特性語言,但可以說是最為著名的。
目前我也正在理解面向對象編程這一編程術語,很多人把它看成一種編程思維、構思程序思維。以后如果充分理解了會在寫一些個人見解吧:)
字面量的表現能力:函數式編程:字面量的表現能力是JavaScript開發生產力得以提高的一個重要原因。在Perl之后,很多語言都提供了功能強大的字面量功能。雖然其中表現突出的不止JavaScript一種,不過由于它的字面量功能相對來說非常優秀,所以作為語言特點之一列舉于此。
2.2 關于編排格式 略 2.3 變量的基礎 2.3.1 變量的使用方法:最后介紹一下函數式編程。函數式編程是一種歷史悠久,而又在最近頗為熱門的話題。函數式編程在面向對象一詞誕生以前就已經存在,不過它在很長一段時間里都被隱藏于過程式編程(面向對象也是過程式編程的一種)的概念之下。但是這種狀況正在改變,JavaScript就是改變這一過程的一部分,盡管JavaScript能直接支持的程序設計范式在本質上還是過程式的,但由于具備了匿名函數,可以把函數作為對象來使用,所以同時也能夠支持函數式編程。
變量的作用是給某一個值或者對象標注名稱。
使用關鍵字 var 就可以對變量進行聲明。
var foo;
現階段先理解為變量名可以使用任意的英文字母即可,后面會更近一步進行說明。通過賦值運算符 = 為變量賦值,左值:變量名 右值:值。
foo = "abc";
變量的聲明和賦值也可同時進行。在聲明變量同時為其賦值是一種較好的編程風格。(不是習慣么?)
var foo = "abc";
JavaScript中的變量沒有變量類型(int,float)。因為沒有變量類型,所以對于同一個變量。既可以賦值字符串,也可以是數字。不過通常情況下,以這種方式使用變量并不是好習慣,所以盡可能避免這樣的代碼。
var foo; foo = "abc"; // 字符串"abc"賦值給變量foo foo = 123; // 將數值123賦值給變量foo
在表達式中寫上某個變量名后就能獲取該變量的值。(或者說把該變量作為右值使用?)
var n = 7; // 將數值7賦值給變量n n+1; // 獲取變量n的值,并加上1 8
嚴格來說,語句中的變量,對于左值和右值是有所不同的。左值指的是賦值表達式 = 左側的變量名,右值指的是賦值表達式 = 右側、或是在賦值表達式之外的其他表達式中出現的變量名。右值中的變量是所要用于賦值的值,而左值中的變量則是將要被賦值的對象。言簡意賅的說,對于左值和右值,將其理解為被賦值的對象和所賦值的來源即可。
斯認為:本身undefined的存在沒有錯誤,但是存在讀取引發錯誤的隱患。
var foo; console.log(foo); // 變量foo的值為 undefined
如果讀取沒有被聲明的變量(即作為右值使用該變量),就會引發 ReferenceError 異常;如果將其作為左值使用,即作為賦值對象使用,則不會發生錯誤。
console.log(x); // ReferenceError: x is not defined2.3.2 常量
ECMAScript標準沒有規定常量的聲明語法。不過在JavaScript的自定義增強功能中,是可以對常量進行聲明的。由于是自定義的增強功能,因此沒有明確的規范。
如果需要聲明一個常量,使用const關鍵字,可以作為常量名使用的字符和變量是相同的,不過習慣上常量名都以大寫字母表示。
const foo = 7; // 聲明常量 console.log(foo);
即使給常量再次賦值,這個常量的值不會發生改變。其實,對常量再次賦值應該算是一種錯誤,但在實際中并不會出錯,對此多家注意。
const foo = 7; foo = 10; // 對常量再次賦值 console.log(foo); // result:7
如果聲明時沒有對常量進行賦值,它的值就是undefined,處理方式和變量相同。
發現:如果聲明常量同時沒有對其初始化(賦值),則今后任何賦值都不會起作用,也就是說這個常量不被回收的話其值永遠是undefined。const foo; console.log(foo) foo = 10; console.log(foo) // result: undefined2.4 函數基礎 2.4.1 函數的定義
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/82543.html
摘要:事件驅動正是一種回調函數設計模式。由于不支持多線程,所以為了實現并行處理,不得不使用回調函數,這逐漸成為了一種慣例。上面的回調函數只是單純的函數而不具有狀態。如果回調函數具有狀態,就能得到更為廣泛的應用。 回調函數模式 回調函數與控制反轉 回調函數是程序設計的一種方法。這種方法是指,在傳遞了可能會進行調用的函數或對象之后,在需要時再分別對其進行調用。由于調用方與被調用方的依賴關系與通常...
摘要:此時使用設置當前值中的猜測值為輸入框的內容值。接著判斷猜測之是否大于或者小于,因為這兩者是范圍之外不再進行判斷,所以最開始使用進行判斷不能小于不能大于以上代碼中表示調用微信小程序接口彈出提示,傳入的參數為提示內容。 ...
摘要:怎么樣好不好最近美國新的全解鎖原生段上架開售,支持等,原一期產品可加價更換年付免費更換,美國原生段仍有少量剩余,套餐原價基礎上每月加價元可更換美國原生,更換的為純凈新分配美國段,絕對傳家寶產品,支持解鎖美區游戲,,等,同時支持。lisahost怎么樣?lisahost好不好?lisahost最近美國新的全解鎖原生IP 206段上架開售,支持tiktok等,原CN2一期產品可加價更換(年付免費...
摘要:順序執行異步函數異步為帶來非阻塞等優勢的同時,同時也在一些場景下帶了不便,如順序執行異步函數,下面總結了一些常用的方法。 火于異步 1995年,當時最流行的瀏覽器——網景中開始運行 JavaScript (最初稱為 LiveScript)。 1996年,微軟發布了 JScript 兼容 JavaScript。隨著網景、微軟競爭而不斷的技術更新,在 2000年前后,JavaScript ...
lisahost怎么樣?lisahost最近美國新的全解鎖原生IP 206段上架開售,支持tiktok等,原CN2一期產品可加價更換(年付免費更換),美國原生ip 163段仍有少量剩余,套餐原價基礎上每月加價20元可更換美國原生IP,更換的IP為純凈新分配美國IP段,絕對傳家寶產品,支持解鎖美區游戲,HULU, DISNEY, StartZ, HBO MAX,ESPN, Amazon Prime ...
閱讀 2034·2021-11-11 16:54
閱讀 2111·2019-08-30 15:55
閱讀 3611·2019-08-30 15:54
閱讀 391·2019-08-30 15:44
閱讀 2228·2019-08-30 10:58
閱讀 424·2019-08-26 10:30
閱讀 3048·2019-08-23 14:46
閱讀 3191·2019-08-23 13:46