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