最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

無廢話JavaScript教程(全集)

 更新時(shí)間:2008年10月07日 23:28:35   作者:  
許多讀者認(rèn)為我那本《JavaScript語言精髓與編程實(shí)踐》讀來辛苦,所以我一直想寫個(gè)簡單的讀本。索性,這次就寫個(gè)最簡單的吧。

http://www.blogjava.net/canonical/archive/2007/12/05/165664.html
延續(xù)是解決狀態(tài)問題的方法之一。簡單說來,有時(shí)間就有狀態(tài):有過去,現(xiàn)在和將來。對(duì)于過去,我們有歷史,也就會(huì)因?yàn)檫^去發(fā)生了什么而決定現(xiàn)在發(fā)生什么,例如因?yàn)樽蛱旌雀吡诵【疲越裉熘荒艹韵≈?;而現(xiàn)在也就是明天的昨天,所以要為了明天能做什么而記錄下今天的狀態(tài),例如今天已經(jīng)吃了稀粥;至于明天,當(dāng)然,將要發(fā)生的事情很多,我們得一件一件地做好準(zhǔn)備。
Oh,重要的就是這個(gè)“做好準(zhǔn)備”了。這在計(jì)算機(jī)系統(tǒng)里叫:事件。或者叫計(jì)劃,或者叫突發(fā)。知道為什么我們的PC機(jī)可以運(yùn)行嗎?En...是因?yàn)橛幸粋€(gè)指令流水線在按照一個(gè)足夠微小的時(shí)間片去執(zhí)行指令。對(duì)于運(yùn)算系統(tǒng)來說,這個(gè)定時(shí)發(fā)生的指令訪問行為,就是中斷。所以有一天一個(gè)朋友問我:如果執(zhí)行邏輯只有順序、分支與循環(huán),那么流程系統(tǒng)中的觸發(fā)器算什么?我想了很久,無解。而現(xiàn)在來回答這個(gè)問題,就得把“時(shí)間”這個(gè)維度加上,所謂突發(fā)、并發(fā)以及類似的東西,是時(shí)序概念下的邏輯。
好了,當(dāng)我們“做好準(zhǔn)備”,為了將來要觸發(fā)某個(gè)東西做準(zhǔn)備的時(shí)候——簡單的說,就當(dāng)是個(gè)時(shí)鐘處理程序好了(在windows中它叫OnTimer,在瀏覽器中它叫setTimeout/setInterval),為了這個(gè)時(shí)候我們能夠在函數(shù)式語言中做好一頓意大利面條,我們說明:“我們已經(jīng)做好了準(zhǔn)備”,以及“我們做好了怎樣的準(zhǔn)備”。而按照函數(shù)式的基本原則,一個(gè)函數(shù)是與狀態(tài)無關(guān)的,它與“將來”這樣一個(gè)時(shí)序無關(guān)。這,變成了一個(gè)矛盾。
事實(shí)上開始我們已經(jīng)與這個(gè)矛盾正面沖突了一次,這就是“循環(huán)”。因?yàn)檠h(huán)需要一個(gè)狀態(tài)量來指示循環(huán)進(jìn)度,
這個(gè)“進(jìn)度”就是時(shí)序相關(guān)的。而函數(shù)式使用了“遞歸”來解決它,也就是通過遞歸函數(shù)的參數(shù)來傳遞這個(gè)進(jìn)度。在“遞歸參數(shù)”——這個(gè)界面的兩邊,函數(shù)式都是時(shí)序無關(guān)的。由此帶來的問題就是棧溢出,解決方法則是尾遞歸;又由此帶來的問題就是編程復(fù)雜性,以及能否證明尾遞歸能替代所有遞歸;解決方案是……溫伯格說得沒錯(cuò),所有解決問題的方法都會(huì)帶來新的問題。Oh...又是溫伯格。 現(xiàn)在,我們明確的需要“更多的狀態(tài)”了,因?yàn)槲覀円呀?jīng)將系統(tǒng)運(yùn)行一個(gè)或是多個(gè)的時(shí)序里——也就CPU。即使我們有結(jié)點(diǎn),而且保證“沒有蟲洞”,那么我們也需要解決一個(gè)CPU中的過去、現(xiàn)在與將來的問題。
函數(shù)式的仙家們說了兩個(gè)字:持續(xù)。簡單啊,就是把為過去、現(xiàn)在的狀態(tài),和為將來的準(zhǔn)備作為函數(shù)的參數(shù)傳過去。看起來,“現(xiàn)在”立即就要爆炸了,因?yàn)榧纫ㄟ^去的、現(xiàn)在的狀態(tài)以及變化,還要包括將來的運(yùn)算。于是新的解決方案是:若要現(xiàn)在不爆炸,"持續(xù)"的界面上不要發(fā)生運(yùn)算就好了。
運(yùn)算由“將來”根據(jù)“過去”的數(shù)據(jù)做決策,這就是持續(xù)。支持它的函數(shù)式特性,就是在惰性求值。簡單的說,
function f(x, c) {
...
c(x);
}
f(data, f);
由于在傳送界面f()上,c本身是不求值的,所以爆炸會(huì)發(fā)生在/不會(huì)發(fā)生都是在將來c(x)進(jìn)行運(yùn)算的時(shí)候。如果
宇宙的熵有極限,那么這個(gè)極限也是在末可知的將來。而且,在末可知的將來,也有可能回扭曲回現(xiàn)在。這就是
持續(xù)的兩個(gè)原則:
--------------------
一個(gè)成功持續(xù)之后,是一個(gè)新的持續(xù)(或過程)
一個(gè)失敗持續(xù)將回到上一個(gè)選擇點(diǎn)
--------------------
正是因?yàn)橛谐掷m(xù)的狀態(tài),且這個(gè)狀態(tài)及持續(xù)本身都是通過函數(shù)參數(shù)傳遞的,所以,“回到選擇點(diǎn)”只是將來自身
的一個(gè)決擇,與現(xiàn)在的狀態(tài)是無關(guān)的。
七、更高級(jí)的函數(shù)式(2)
無論如何,種種函數(shù)式的復(fù)雜性,確實(shí)是在編程范型中保持一種自我的純粹性而存在的。例如生成器(產(chǎn)生器)
這個(gè)問題,由于一批數(shù)據(jù)的產(chǎn)生之間是有關(guān)系的(例如增量),而產(chǎn)生過程是時(shí)序相關(guān)的(不總是在一次調(diào)用中
得到全部的數(shù)據(jù)),因此函數(shù)式語言定義了一個(gè)“生成器”這樣的函數(shù)概念。我們可以在生成器中定義一個(gè)yield,
這個(gè)返回就是“將來”回到這個(gè)“現(xiàn)在”的一個(gè)蟲洞。通過這個(gè)蟲洞,我們可以拿到一個(gè)時(shí)序相關(guān)的數(shù)據(jù)。下面
就是這樣的一個(gè)例子(mozilla上的斐波那契數(shù)列示例):
<!-- for firefox 3 -->
<script type="application/javascript;version=1.7">
function fib() {
var i = 0, j = 1;
while (true) {
yield i; //<-蟲洞在這里
var t = i;
i = j;
j += t;
}
}
var g = fib();
a = g.next();
b = g.next();
c = g.next();
// ...
// .. 三天以后(或一個(gè)循環(huán)以后),某時(shí)空旅行家想回到fib里去看看
z = g.next();
// 呵,原來是值“2”
alert(z);
</script>
八、結(jié)語
好象,好象這篇《無廢話》有很多廢話……哈哈,玩笑啦,真的全無廢話,還是活人能看的木?
真的那么想讀無廢話,你應(yīng)該去讀大學(xué)教材了。或者,這里還有一本《JavaScirpt語言精髓與編程實(shí)踐》。
看見木,語言……精髓哦……,哈哈。

相關(guān)文章

  • JavaScript計(jì)算出現(xiàn)精度丟失問題的解決方法

    JavaScript計(jì)算出現(xiàn)精度丟失問題的解決方法

    Javascript作為一門大型編程語言,在日常開發(fā)中難免會(huì)涉及到大量的數(shù)學(xué)計(jì)算,然而,浮點(diǎn)數(shù)在計(jì)算過程中可能出現(xiàn)精度的問題,下面我們就來學(xué)習(xí)一下Javascript中高精度計(jì)算及其相關(guān)知識(shí)吧
    2023-11-11
  • 將input框中輸入內(nèi)容顯示在相應(yīng)的div中【三種方法可選】

    將input框中輸入內(nèi)容顯示在相應(yīng)的div中【三種方法可選】

    本篇文章主要介紹了在input框中輸入內(nèi)容,會(huì)相應(yīng)的顯示在下面的div中的不同做法:js方法;jQuery方法;AngularJs方法,具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-05-05
  • JavaScript中boolean類型之三種情景實(shí)例代碼

    JavaScript中boolean類型之三種情景實(shí)例代碼

    下面小編就為大家?guī)硪黄狫avaScript中boolean類型之三種情景實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-11-11
  • 精彩的Bootstrap案例分享 重點(diǎn)在注釋!(選項(xiàng)卡、柵格布局)

    精彩的Bootstrap案例分享 重點(diǎn)在注釋!(選項(xiàng)卡、柵格布局)

    這篇文章主要為大家分享了一個(gè)精彩的Bootstrap案例,涉及到了選項(xiàng)卡、柵格布局,關(guān)鍵重點(diǎn)在注釋,感興趣的小伙伴們可以參考一下
    2016-07-07
  • js中的document.querySelector()方法舉例詳解

    js中的document.querySelector()方法舉例詳解

    這篇文章主要給大家介紹了關(guān)于js中document.querySelector()方法的相關(guān)資料,document.querySelector是JavaScript中的一個(gè)內(nèi)置方法,用于通過CSS選擇器選擇文檔中的第一個(gè)匹配元素,需要的朋友可以參考下
    2024-01-01
  • JS中call和apply函數(shù)用法實(shí)例分析

    JS中call和apply函數(shù)用法實(shí)例分析

    這篇文章主要介紹了JS中call和apply函數(shù)用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了call和apply函數(shù)繼承功能的使用方法、區(qū)別及操作注意事項(xiàng),需要的朋友可以參考下
    2018-06-06
  • 微信小程序獲取用戶openid的實(shí)現(xiàn)

    微信小程序獲取用戶openid的實(shí)現(xiàn)

    這篇文章主要介紹了微信小程序獲取用戶openid的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • 小程序?qū)崿F(xiàn)可拖動(dòng)的懸浮按鈕

    小程序?qū)崿F(xiàn)可拖動(dòng)的懸浮按鈕

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)可拖動(dòng)的懸浮按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • javascript數(shù)組的定義及操作實(shí)例

    javascript數(shù)組的定義及操作實(shí)例

    在文章里小編給大家整理的是關(guān)于javascript數(shù)組的定義及操作的相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-11-11
  • 微信小程序?qū)崿F(xiàn)底部彈窗

    微信小程序?qū)崿F(xiàn)底部彈窗

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)底部彈窗,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07

最新評(píng)論

兴义市| 康定县| 奉贤区| 上栗县| 怀远县| 承德县| 竹溪县| 芦山县| 昌宁县| 蒙阴县| 夏津县| 宜宾县| 玉山县| 武强县| 克山县| 泰兴市| 蒲城县| 南丰县| 苏州市| 大理市| 五华县| 长岭县| 安新县| 红桥区| 甘肃省| 南平市| 巴塘县| 沂南县| 霍州市| 德州市| 金川县| 兰州市| 冀州市| 镇远县| 新安县| 于都县| 巫山县| 兴海县| 娄底市| 靖宇县| 武胜县|