成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript 編程精解 中文第三版 零、前言

sanyang / 2639人閱讀

摘要:來(lái)源編程精解中文第三版翻譯項(xiàng)目原文譯者飛龍協(xié)議自豪地采用谷歌翻譯部分參考了編程精解第版,這是一本關(guān)于指導(dǎo)電腦的書(shū)。在可控的范圍內(nèi)編寫(xiě)程序是編程過(guò)程中首要解決的問(wèn)題。我們可以用中文來(lái)描述這些指令將數(shù)字存儲(chǔ)在內(nèi)存地址中的位置。

來(lái)源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項(xiàng)目

原文:Introduction

譯者:飛龍

協(xié)議:CC BY-NC-SA 4.0

自豪地采用谷歌翻譯

部分參考了《JavaScript 編程精解(第 2 版)》

We think we are creating the system for our own purposes. We believe we are making it in our own image... But the computer is not really like us. It is a projection of a very slim part of ourselves: that portion devoted to logic, order, rule, and clarity.

Ellen Ullman,《Close to the Machine: Technophilia and its Discontents》

這是一本關(guān)于指導(dǎo)電腦的書(shū)。時(shí)至今日,計(jì)算機(jī)就像螺絲刀一樣隨處可見(jiàn),但相比于螺絲刀而言,計(jì)算機(jī)更復(fù)雜一些,并且,讓他們做你想讓他們做的事情,并不總是那么容易。

如果你讓計(jì)算機(jī)執(zhí)行的任務(wù)是常見(jiàn)的,易于理解的任務(wù),例如向你顯示你的電子郵件,或像計(jì)算器一樣工作,則可以打開(kāi)相應(yīng)的應(yīng)用并開(kāi)始工作。 但對(duì)于獨(dú)特的或開(kāi)放式的任務(wù),應(yīng)用可能不存在。

這就是編程可能出現(xiàn)的地方。編程是構(gòu)建一個(gè)程序的行為 - 它是一組精確的指令,告訴計(jì)算機(jī)做什么。 由于計(jì)算機(jī)是愚蠢的,迂腐的野獸,編程從根本上是乏味和令人沮喪的。

幸運(yùn)的是,如果你可以克服這個(gè)事實(shí),并且甚至可以享受愚蠢機(jī)器可以處理的嚴(yán)謹(jǐn)思維,那么編程可以是非常有益的。 它可以讓你在幾秒鐘內(nèi)完成手動(dòng)操作。 這是一種方法,讓你的電腦工具去做它以前做不到的事情。 它也提供了抽象思維的優(yōu)秀練習(xí)。

大多數(shù)編程都是用編程語(yǔ)言完成的。 編程語(yǔ)言是一種人工構(gòu)建的語(yǔ)言,用于指導(dǎo)計(jì)算機(jī)。 有趣的是,我們發(fā)現(xiàn)與電腦溝通的最有效的方式,與我們彼此溝通的方式相差太大。 與人類語(yǔ)言一樣,計(jì)算機(jī)語(yǔ)言可以以新的方式組合詞語(yǔ)和詞組,從而可以表達(dá)新的概念。

在某種程度上,基于語(yǔ)言的界面,例如 80 年代和 90 年代的 BASIC 和 DOS 提示符,是與計(jì)算機(jī)交互的主要方法。 這些已經(jīng)在很大程度上被視覺(jué)界面取代,這些視覺(jué)界面更容易學(xué)習(xí),但提供更少的自由。 計(jì)算機(jī)語(yǔ)言仍然存在,如果你知道在哪里看到。 每種現(xiàn)代 Web 瀏覽器都內(nèi)置了一種這樣的語(yǔ)言,即 JavaScript,因此幾乎可以在所有設(shè)備上使用。

本書(shū)將試圖讓你足夠了解這門(mén)語(yǔ)言,從而完成有用和有趣的東西。

關(guān)于程序設(shè)計(jì)

除了講解 JavaScript 之外,本書(shū)也會(huì)介紹一些程序設(shè)計(jì)的基本原則。程序設(shè)計(jì)還是比較復(fù)雜的。編程的基本規(guī)則簡(jiǎn)單清晰,但在這些基本規(guī)則之上構(gòu)建的程序卻容易變得復(fù)雜,導(dǎo)致程序產(chǎn)生了自己的規(guī)則和復(fù)雜性。即便程序是按照你自己的思路去構(gòu)建的,你也有可能迷失在代碼之間。

在閱讀本書(shū)時(shí),你有可能會(huì)覺(jué)得書(shū)中的概念難以理解。如果你剛剛開(kāi)始學(xué)習(xí)編程,那么你估計(jì)還有不少東西需要掌握呢。如果你想將所學(xué)知識(shí)融會(huì)貫通,那么就需要去多參考和學(xué)習(xí)一些資料。

是否付出必要的努力完全取決于你自己。當(dāng)你閱讀本書(shū)的時(shí)候發(fā)現(xiàn)任何難點(diǎn),千萬(wàn)不要輕易就對(duì)自己的能力下結(jié)論。只要能堅(jiān)持下去,你就是好樣的。稍做休息,復(fù)習(xí)一下所學(xué)的知識(shí)點(diǎn),始終確保自己閱讀并理解了示例程序和相關(guān)的練習(xí)。學(xué)習(xí)是一項(xiàng)艱巨的任務(wù),但你掌握的所有知識(shí)都屬于你自己,而且今后的學(xué)習(xí)道路會(huì)愈加輕松。

當(dāng)行動(dòng)無(wú)利可圖時(shí),就收集信息;當(dāng)信息無(wú)利可圖時(shí),就休息。

Ursula K. Le Guin,《The Left Hand of Darkness》

一個(gè)程序有很多含義:它是開(kāi)發(fā)人員編寫(xiě)的一段文本、計(jì)算機(jī)執(zhí)行的一段指令集合、計(jì)算機(jī)內(nèi)存當(dāng)中的數(shù)據(jù)以及控制內(nèi)存中數(shù)據(jù)的操作集合。我們通常很難將程序與我們?nèi)粘I钪惺煜さ氖挛镞M(jìn)行對(duì)比。有一種表面上比較恰當(dāng)?shù)谋扔?,即將程序視作包含許多組件的機(jī)器,為了讓機(jī)器正常工作,這些組件通過(guò)內(nèi)部通信來(lái)實(shí)現(xiàn)整個(gè)機(jī)器的正常運(yùn)轉(zhuǎn)。

計(jì)算機(jī)是一臺(tái)物理機(jī)器,充當(dāng)這些非物質(zhì)機(jī)器的載體。計(jì)算機(jī)本身并不能實(shí)現(xiàn)多么復(fù)雜的功能,但計(jì)算機(jī)之所以有用是因?yàn)樗鼈兊倪\(yùn)算速度非???。而程序的作用就是將這些看似簡(jiǎn)單的動(dòng)作組合起來(lái),然后實(shí)現(xiàn)復(fù)雜的功能。

程序是思想的結(jié)晶。編寫(xiě)程序不需要什么物質(zhì)投入,它很輕量級(jí),通過(guò)我們的雙手創(chuàng)造。

但如果不稍加注意,程序的體積和復(fù)雜度就會(huì)失去控制,甚至代碼的編寫(xiě)者也會(huì)感到迷惑。在可控的范圍內(nèi)編寫(xiě)程序是編程過(guò)程中首要解決的問(wèn)題。當(dāng)程序運(yùn)行時(shí),一切都是那么美好。編程的精粹就在于如何更好地控制復(fù)雜度。質(zhì)量高的程序的復(fù)雜度都不會(huì)太高。

很多開(kāi)發(fā)人員認(rèn)為,控制程序復(fù)雜度的最好方法就是避免使用不熟悉的技術(shù)。他們制定了嚴(yán)格的規(guī)則(“最佳實(shí)踐”),并小心翼翼地呆在他們安全區(qū)內(nèi)。

這不僅無(wú)聊,而且也是無(wú)效的。新問(wèn)題往往需要新的解決方案。編程領(lǐng)域還很年輕,仍然在迅速發(fā)展,并且多樣到足以為各種不同的方法留出空間。在程序設(shè)計(jì)中有許多可怕的錯(cuò)誤,你應(yīng)該繼續(xù)犯錯(cuò),以便你能理解它們。好的程序看起來(lái)是什么樣的感覺(jué),是在實(shí)踐中發(fā)展的,而不是從一系列規(guī)則中學(xué)到的。

為什么編程語(yǔ)言重要

在計(jì)算技術(shù)發(fā)展伊始,并沒(méi)有編程語(yǔ)言這個(gè)概念。程序看起來(lái)就像這樣:

00110001 00000000 00000000
00110001 00000001 00000001
00110011 00000001 00000010
01010001 00001011 00000010
00100010 00000010 00001000
01000011 00000001 00000000
01000001 00000001 00000001
00010000 00000010 00000000
01100010 00000000 00000000

該程序計(jì)算數(shù)字 1~10 之和,并打印出結(jié)果:1+2+...+10=55。該程序可以運(yùn)行在一個(gè)簡(jiǎn)單的機(jī)器上。在早期計(jì)算機(jī)上編程時(shí),我們需要在正確的位置設(shè)置大量開(kāi)關(guān)陣列,或在紙帶上穿孔并將紙帶輸入計(jì)算機(jī)中。你可以想象這個(gè)過(guò)程是多么冗長(zhǎng)乏味且易于出錯(cuò)。即便是編寫(xiě)非常簡(jiǎn)單的程序,也需要有經(jīng)驗(yàn)的人耗費(fèi)很大精力才能完成。編寫(xiě)復(fù)雜的程序則更是難上加難。

當(dāng)然了,手動(dòng)輸入這些晦澀難懂的位序列(1 和 0)來(lái)編寫(xiě)程序的確能讓程序員感到很有成就感,而且能給你的職業(yè)帶來(lái)極大的滿足感。

在上面的程序中,每行都包含一條指令。我們可以用中文來(lái)描述這些指令:

將數(shù)字 0 存儲(chǔ)在內(nèi)存地址中的位置 0。

將數(shù)字 1 存儲(chǔ)在內(nèi)存地址的位置 1。

將內(nèi)存地址的位置 1 中的值存儲(chǔ)在內(nèi)存地址的位置 2。

將內(nèi)存地址的位置 2 中的值減去數(shù)字 11。

如果內(nèi)存地址的位置 2 中的值是 0,則跳轉(zhuǎn)到指令 9。

將內(nèi)存地址的位置 1 中的值加到內(nèi)存地址的位置 0。

將內(nèi)存地址的位置 1 中的值加上數(shù)字 1。

跳轉(zhuǎn)到指令 3。

輸出內(nèi)存地址的位置 0 中的值。

雖說(shuō)這已經(jīng)比一大堆位序列要好讀了許多,但仍然不清晰。使用名稱而不是數(shù)字用于指令和存儲(chǔ)位置有所幫助:

 Set “total” to 0.
 Set “count” to 1.
[loop]
 Set “compare” to “count”.
 Subtract 11 from “compare”.
 If “compare” is zero, continue at [end].
 Add “count” to “total”.
 Add 1 to “count”.
 Continue at [loop].
[end]
 Output “total”.

現(xiàn)在你能看出該程序是如何工作的嗎?前兩行代碼初始化兩個(gè)內(nèi)存位置的值:total用于保存累加計(jì)算結(jié)果,而count則用于記錄當(dāng)前數(shù)字。你可能覺(jué)得compare的那行代碼看起來(lái)有些奇怪。程序想根據(jù)count是否等于 11 來(lái)決定是否應(yīng)該停止運(yùn)行。因?yàn)槲覀兊臋C(jī)器相當(dāng)原始,所以只能測(cè)試一個(gè)數(shù)字是否為 0,并根據(jù)它做出決策。因此程序用名為compare的內(nèi)存位置存放count–11的值,并根據(jù)該值是否為 0 決定是否跳轉(zhuǎn)。接下來(lái)兩行將count的值累加到結(jié)果上,并將count加 1,直到count等于11為止。

下面使用 JavaScript 重新編寫(xiě)了上面的程序:

let total = 0, count = 1;
while (count <= 10) {
  total += count;
  count += 1;
}
console.log(total);
// → 55

這個(gè)版本的程序得到了一些改進(jìn)。更為重要的是,我們?cè)僖膊恍枰付ǔ绦蛉绾蝸?lái)回跳轉(zhuǎn)了,而是由while結(jié)構(gòu)負(fù)責(zé)完成這個(gè)任務(wù)。只要我們給予的條件成立,while語(yǔ)句就會(huì)不停地執(zhí)行其下方的語(yǔ)句塊(包裹在大括號(hào)中)。而我們給予的條件是count<=10,意思是“count小于等于 10”。我們?cè)僖膊恍枰獎(jiǎng)?chuàng)建臨時(shí)的值并將其與 0 比較,那樣的代碼十分煩瑣。編程語(yǔ)言的一項(xiàng)職責(zé)就是,能夠幫助我們處理這些煩瑣無(wú)趣的邏輯。

在程序的結(jié)尾,也就是while語(yǔ)句結(jié)束后,我們使用console.log操作來(lái)輸出結(jié)果。

最后,我們恰好有rangesum這類方便的操作。下面代碼中的range函數(shù)用于創(chuàng)建數(shù)字集合,sum函數(shù)用于計(jì)算數(shù)字集合之和:

console.log(sum(range(1, 10)));
// → 55

我們可以從這里了解到,同一個(gè)程序的長(zhǎng)度可長(zhǎng)可短,可讀性可高可低。第一個(gè)版本的程序晦澀難懂,而最后一個(gè)版本的程序則接近于人類語(yǔ)言的表達(dá)方式:將 1~10 范圍內(nèi)的數(shù)字之和記錄下來(lái)(我們會(huì)在后面的章節(jié)中詳細(xì)介紹如何編寫(xiě)sumrange這樣的函數(shù))。

優(yōu)秀的編程語(yǔ)言可以為開(kāi)發(fā)人員提供更高層次的抽象,使用類似于人類語(yǔ)言的方式來(lái)與計(jì)算機(jī)進(jìn)行交互。它有助于省略細(xì)節(jié),提供便捷的積木(比如whileconsole.log),允許你定義自己的積木(比如sumrange函數(shù)),并使這些積木易于編寫(xiě)。。

什么是 JavaScript

JavaScript 誕生于 1995 年。起初,Netscape Navigator 瀏覽器將其運(yùn)用在網(wǎng)頁(yè)上添加程序。自此以后,各類主流圖形網(wǎng)頁(yè)瀏覽器均采用了 JavaScript。JavaScript 使得現(xiàn)代網(wǎng)頁(yè)應(yīng)用程序成為可能 —— 使用 JavaScript 可以直接與用戶交互,從而避免每一個(gè)動(dòng)作都需要重新載入頁(yè)面。但有許多傳統(tǒng)網(wǎng)站也會(huì)使用 JavaScript 來(lái)提供實(shí)時(shí)交互以及更加智能的表單功能。

JavaScript 其實(shí)和名為Java的程序設(shè)計(jì)語(yǔ)言沒(méi)有任何關(guān)系。起了這么一個(gè)相似的名字完全是市場(chǎng)考慮使然,這并非是一個(gè)明智的決定。當(dāng) JavaScript 出現(xiàn)時(shí),Java 語(yǔ)言已在市場(chǎng)上得到大力推廣且擁有了極高人氣,因此某些人覺(jué)得依附于 Java 的成功是個(gè)不錯(cuò)的主意。而我們現(xiàn)在已經(jīng)無(wú)法擺脫這個(gè)名字了。

在 JavaScript 被廣泛采用之后,ECMA 國(guó)際制訂了一份標(biāo)準(zhǔn)文檔來(lái)描述 JavaScript 的工作行為,以便所有聲稱支持 JavaScript 的軟件都使用同一種語(yǔ)言。標(biāo)準(zhǔn)化完成后,該標(biāo)準(zhǔn)被稱為 ECMAScript 標(biāo)準(zhǔn)。實(shí)際上,術(shù)語(yǔ) ECMAScript 和 JavaScript 可以交換使用。它們不過(guò)是同一種語(yǔ)言的兩個(gè)名字而已。

許多人會(huì)說(shuō) JavaScript 語(yǔ)言的壞話。這其中有很多這樣的言論都是正確的。當(dāng)被要求第一次使用 JavaScript 編寫(xiě)代碼時(shí),我當(dāng)時(shí)就覺(jué)得這門(mén)語(yǔ)言難以駕馭。JavaScript 接受我輸入的任何代碼,但是又使用和我的想法完全不同的方式來(lái)解釋代碼。由于我沒(méi)有任何線索知道我之前做了什么,因此我需要做出更多工作,但這也就存在一個(gè)實(shí)際問(wèn)題:我們可以自由使用 JavaScript,而這種自由卻幾乎沒(méi)有限度。這種設(shè)計(jì)其實(shí)是希望初學(xué)者更容易使用 JavaScript 編寫(xiě)程序。但實(shí)際上,系統(tǒng)不會(huì)指出我們錯(cuò)在何處,因此從程序中找出問(wèn)題變得更加棘手。

但這種自由性也有其優(yōu)勢(shì),許多技術(shù)在更為嚴(yán)格的語(yǔ)言中不可能實(shí)現(xiàn),而在 JavaScript 中則留下了實(shí)現(xiàn)的余地,正如你看到的那樣(比如第十章),有些優(yōu)勢(shì)可以彌補(bǔ) JavaScript 的一些缺點(diǎn)。在正確地學(xué)習(xí) JavaScript 并使用它工作了一段時(shí)間后,我真正喜歡上了 JavaScript。

JavaScript 版本眾多。大約在 2000~2010 年間,這正是 JavaScript 飛速發(fā)展的時(shí)期,瀏覽器支持最多的是 ECMAScript 3。在此期間,ECMA 著手制定 ECMAScript 4,這是一個(gè)雄心勃勃的版本,ECMA 計(jì)劃在這個(gè)版本中加入許多徹底的改進(jìn)與擴(kuò)展。但由于 ECMAScript 3 被廣泛使用,這種過(guò)于激進(jìn)的修改必然會(huì)遭遇重重阻礙,最后 ECMA 不得不于 2008 年放棄了版本 4 的制定。這就產(chǎn)生了不那么雄心勃勃的版本 5,這只是一些沒(méi)有爭(zhēng)議的改進(jìn),出現(xiàn)在 2009 年。 然后版本 6 在 2015 年誕生,這是一個(gè)重大的更新,其中包括計(jì)劃用于版本 4 的一些想法。從那以后,每年都會(huì)有新的更新。

語(yǔ)言不斷發(fā)展的事實(shí)意味著,瀏覽器必須不斷跟上,如果你使用的是較老的瀏覽器,它可能不支持每個(gè)特性。 語(yǔ)言設(shè)計(jì)師會(huì)注意,不要做任何可能破壞現(xiàn)有程序的改變,所以新的瀏覽器仍然可以運(yùn)行舊的程序。 在本書(shū)中,我使用的是 2017 版的 JavaScript。

Web 瀏覽器并不是唯一一個(gè)可以運(yùn)行 JavaScript 的平臺(tái)。有些數(shù)據(jù)庫(kù),比如 MongoDB 和 CouchDB,也使用 JavaScript 作為腳本語(yǔ)言和查詢語(yǔ)言。一些桌面和服務(wù)器開(kāi)發(fā)的平臺(tái),特別是 Node.js 項(xiàng)目(第二十章介紹),為瀏覽器以外的 JavaScript 編程提供了一個(gè)環(huán)境。

代碼及相關(guān)工作

代碼是程序的文本內(nèi)容。本書(shū)多數(shù)章節(jié)都介紹了大量代碼。我相信閱讀代碼和編寫(xiě)代碼是學(xué)習(xí)編程不可或缺的部分。嘗試不要僅僅看一眼示例,而應(yīng)該認(rèn)真閱讀并理解每個(gè)示例。剛開(kāi)始使用這種方式可能會(huì)速度較慢并為代碼所困惑,但我堅(jiān)信你很快就可以熟能生巧。對(duì)待習(xí)題的方法也應(yīng)該一樣。除非你確實(shí)已經(jīng)編寫(xiě)代碼解決了問(wèn)題,否則不要假設(shè)你已經(jīng)理解了問(wèn)題。

建議讀者應(yīng)嘗試在實(shí)際的 JavaScript 解釋器中執(zhí)行習(xí)題代碼。這樣一來(lái),你就可以馬上獲知代碼工作情況的反饋,而且我希望讀者去做更多的試驗(yàn),而不僅僅局限于習(xí)題的要求。

可以在 http://eloquentjavascript.net...,該網(wǎng)址會(huì)提供每個(gè)習(xí)題的初始代碼,讓你專心于解答習(xí)題。

如果想要在本書(shū)提供的沙箱以外執(zhí)行本書(shū)代碼,需要稍加注意。許多的示例是獨(dú)立的,而且可以在任何 JavaScript 環(huán)境下運(yùn)行。但后續(xù)章節(jié)的代碼大多數(shù)都是為特定環(huán)境(瀏覽器或者 Node.js)編寫(xiě)的,而且只能在這些特定環(huán)境下執(zhí)行代碼。此外,許多章節(jié)定義了更大的程序,這些章節(jié)中出現(xiàn)的代碼片段會(huì)互相依賴或是依賴于一些外部文件。本書(shū)網(wǎng)站的沙箱提供了 zip 壓縮文件的鏈接,該文件包含了所有運(yùn)行特定章節(jié)代碼所需的腳本和數(shù)據(jù)文件。

本書(shū)概覽

本書(shū)包括三個(gè)部分。前十二章討論 JavaScript 語(yǔ)言本身的一些特性。接下來(lái)的 8 章討論網(wǎng)頁(yè)瀏覽器和 JavaScript 在網(wǎng)頁(yè)編程中的實(shí)踐。最后兩章專門(mén)講解另一個(gè)使用 JavaScript 編程的環(huán)境 —— Node.js。

縱觀本書(shū),共有 5 個(gè)項(xiàng)目實(shí)戰(zhàn)章,用于講解規(guī)模較大的示例程序,你可以通過(guò)這些章來(lái)仔細(xì)品味真實(shí)的編程過(guò)程。根據(jù)項(xiàng)目出現(xiàn)次序,我們會(huì)陸續(xù)構(gòu)建遞送機(jī)器人(7)、程序設(shè)計(jì)語(yǔ)言(12)、平臺(tái)游戲(16)、像素繪圖程序(19)和一個(gè)動(dòng)態(tài)網(wǎng)站(21)。

本書(shū)介紹編程語(yǔ)言時(shí),首先使用4章來(lái)介紹 JavaScript 語(yǔ)言的基本結(jié)構(gòu),包括第二章控制結(jié)構(gòu)(比如在本前言中看到的while單詞)、第三章函數(shù)(編寫(xiě)你自己的積木)和第四章數(shù)據(jù)結(jié)構(gòu)。此后你就可以編寫(xiě)簡(jiǎn)單的程序了。接下來(lái),第五章和第六章介紹函數(shù)和對(duì)象的運(yùn)用技術(shù),以編寫(xiě)更加抽象的代碼并以此來(lái)控制復(fù)雜度。

介紹完第一個(gè)項(xiàng)目實(shí)戰(zhàn)(7)之后,將會(huì)繼續(xù)講解語(yǔ)言部分,例如第八章錯(cuò)誤處理和 bug 修復(fù)、第九章正則表達(dá)式(處理文本數(shù)據(jù)的重要工具)、第十章模塊化(解決復(fù)雜度的問(wèn)題)以及第十一章異步編程(處理需要時(shí)間的事件)。第二個(gè)項(xiàng)目實(shí)戰(zhàn)章節(jié)(12)則是對(duì)本書(shū)第一部分的總結(jié)。

第二部分(第十三章到第十九章),闡述了瀏覽器 JavaScript 中的一些工具。你將會(huì)學(xué)到在屏幕上顯示某些元素的方法(第十四章與第十七章),響應(yīng)用戶輸入的方法(第十五章)和通過(guò)網(wǎng)絡(luò)通信的方法(第十八章)。這部分又有兩個(gè)項(xiàng)目實(shí)戰(zhàn)章節(jié)。

此后,第二十章闡述 Node.js,而第二十一章使用該工具構(gòu)建一個(gè)簡(jiǎn)單的網(wǎng)頁(yè)系統(tǒng)。

本書(shū)版式約定

本書(shū)中存在大量代碼,程序(包括你迄今為止看到的一些示例)代碼的字體如下所示:

function factorial(n) {
  if (n == 0) {
    return 1;
  } else {
    return factorial(n - 1) * n;
  }
}

為了展示程序產(chǎn)生的輸出,本書(shū)常在代碼后編寫(xiě)代碼期望輸出,輸出結(jié)果前會(huì)加上兩個(gè)反斜杠和一個(gè)箭頭。

console.log(factorial(8));
// → 40320

祝好運(yùn)!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/105029.html

相關(guān)文章

  • JavaScript 編程精解 中文三版 五、高階函數(shù)

    摘要:高階函數(shù)如果一個(gè)函數(shù)操作其他函數(shù),即將其他函數(shù)作為參數(shù)或?qū)⒑瘮?shù)作為返回值,那么我們可以將其稱為高階函數(shù)。我們可以使用高階函數(shù)對(duì)一系列操作和值進(jìn)行抽象。高階函數(shù)有多種表現(xiàn)形式。腳本數(shù)據(jù)集數(shù)據(jù)處理是高階函數(shù)表現(xiàn)突出的一個(gè)領(lǐng)域。 來(lái)源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項(xiàng)目原文:Higher-Order Functions 譯者:飛龍 協(xié)議:CC BY-NC-...

    blastz 評(píng)論0 收藏0
  • JavaScript 編程精解 中文三版 一、值,類型和運(yùn)算符

    摘要:來(lái)源編程精解中文第三版翻譯項(xiàng)目原文譯者飛龍協(xié)議自豪地采用谷歌翻譯部分參考了編程精解第版在機(jī)器的表面之下,程序在運(yùn)轉(zhuǎn)。本章將會(huì)介紹程序當(dāng)中的基本元素,包括簡(jiǎn)單的值類型以及值運(yùn)算符。示例中的乘法運(yùn)算符優(yōu)先級(jí)高于加法。 來(lái)源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項(xiàng)目原文:Values, Types, and Operators 譯者:飛龍 協(xié)議:CC BY-NC...

    wh469012917 評(píng)論0 收藏0
  • JavaScript 編程精解 中文三版 二、程序結(jié)構(gòu)

    摘要:為了運(yùn)行包裹的程序,可以將這些值應(yīng)用于它們。在瀏覽器中,輸出出現(xiàn)在控制臺(tái)中。在英文版頁(yè)面上運(yùn)行示例或自己的代碼時(shí),會(huì)在示例之后顯示輸出,而不是在瀏覽器的控制臺(tái)中顯示。這被稱為條件執(zhí)行。 來(lái)源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項(xiàng)目原文:Program Structure 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯 部分參考了《J...

    ThinkSNS 評(píng)論0 收藏0
  • JavaScript 編程精解 中文三版 十三、瀏覽器中的 JavaScript

    摘要:在本例中,使用屬性指定鏈接的目標(biāo),其中表示超文本鏈接。您應(yīng)該認(rèn)為和元數(shù)據(jù)隱式出現(xiàn)在示例中,即使它們沒(méi)有實(shí)際顯示在文本中。 來(lái)源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項(xiàng)目原文:JavaScript and the Browser 譯者:飛龍 協(xié)議:CC BY-NC-SA 4.0 自豪地采用谷歌翻譯 部分參考了《JavaScript 編程精解(第 2 版)》 ...

    zhiwei 評(píng)論0 收藏0
  • JavaScript 編程精解 中文三版 十九、項(xiàng)目:像素藝術(shù)編輯器

    摘要:相反,當(dāng)響應(yīng)指針事件時(shí),它會(huì)調(diào)用創(chuàng)建它的代碼提供的回調(diào)函數(shù),該函數(shù)將處理應(yīng)用的特定部分?;卣{(diào)函數(shù)可能會(huì)返回另一個(gè)回調(diào)函數(shù),以便在按下按鈕并且將指針移動(dòng)到另一個(gè)像素時(shí)得到通知。它們?yōu)榻M件構(gòu)造器的數(shù)組而提供。 來(lái)源:ApacheCN『JavaScript 編程精解 中文第三版』翻譯項(xiàng)目原文:Project: A Pixel Art Editor 譯者:飛龍 協(xié)議:CC BY-NC-SA 4...

    Meils 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<