{{sellerTotalView > 1 ? __("sellers", {number: sellerTotalView}) : __("seller", {number: sellerTotalView}) }}, {{numTotalView > 1 ? __("items", {number: numTotalView}) : __("item", {number: numTotalView}) }}
free FREE

Change Your Zip Code

Inventory information and delivery speeds may vary for different locations.

Location History

{{email ? __('Got it!') : __('Restock Alert')}}

We will notify you by email when the item back in stock.

Cancel
Yami

Jingdong book

JavaScript编程精解(原书第2版)

{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}

JavaScript编程精解(原书第2版)

{{__(":people-members", {'people': item.limit_people_count})}} {{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ item.invalid_price }} {{ itemDiscount }}
Ends in
{{ itemCurrency }}{{ item.valid_price }}
{{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }}
{{ itemDiscount }}
{{ itemCurrency }}{{ item.valid_price }} {{ itemCurrency }}{{ priceFormat(item.valid_price / item.bundle_specification) }}/{{ item.unit }} {{ itemCurrency }}{{ item.invalid_price }} {{itemDiscount}}
{{ itemCurrency }}{{ item.valid_price }}
Sale ends in
Sale will starts after Sale ends in
{{ getSeckillDesc(item.seckill_data) }}
{{ __( "Pay with Gift Card to get sale price: :itemCurrency:price", { 'itemCurrency' : itemCurrency, 'price' : (item.giftcard_price ? priceFormat(item.giftcard_price) : '0.00') } ) }} ({{ itemCurrency }}{{ priceFormat(item.giftcard_price / item.bundle_specification) }}/{{ item.unit }}) Details
Best before

Currently unavailable.

We don't know when or if this item will be back in stock.

Unavailable in your area.
Sold Out

Details

Full product details
Editer Recommend

世JavaScript之父Brendan Eich高度评价并强力推荐

JavaScript编程原理与运用规则完美融合,读者将在游戏式开发中学会JavaScript程序设计,是系统学习JavaScript程序设计的作品


JavaScript几乎可以说是所有现代Web应用程序的核心,无论是社交应用程序,还是时下流行的浏览器游戏。虽说学习和使用JavaScript的成本并不高,但是它却是一种灵活且复杂的编程语言,你可以用它来构建功能全面且复杂的应用程序。

本书深入剖析了JavaScript编程语言的内部细节,并阐述了编写优雅高效代码的方法。作者Marijn Haverbeke从示例代码开始讲解,逐步实现了完整的项目,与此同时作者还提供了一系列习题供读者练习,你可以从中学习并了解如何编写自己的程序。

通过阅读本书,你将学习和了解到:
编程的基本要素,这其中包括语法、控制流和数据。
如何组织和创建面向对象的代码以及函数式编程的技术。
如何在浏览器当中编写脚本和创建基本Web应用程序。
如何使用DOM与浏览器进行高效交互。
如何通过Node.js来构建服务器和工具。

本书的第2版经过全面的更新和修订,覆盖了JavaScript的绝大多数语言特性,涉及Web编程和Node.js服务器编程,以及JavaScript性能优化等。本书的在线网站提供了所有源代码,你可以通过在线沙箱来编辑、运行代码,并实时查看输出结果。

Content Description

JavaScript是一门流行的程序设计语言,在这个Web的时代中,其地位已经变得越来越举足轻重。本书从JavaScript的基本语言特性入手,详细讲解JavaScript的语法,并通过一些实例,讲解使用其解决实际问题的方法与思路。同时又结合网页开发与Node.js讲解JavaScript在Web前端开发与服务端开发中的作用,可以为读者快速学习掌握JavaScript提供系统指导。

??

本书共分为三个部分。第一部分主要讨论JavaScript的语言特性。第1~4章介绍JavaScript语言的基本结构,包括控制结构、函数和数据结构。第5~6章深入探讨函数与对象,并介绍如何控制代码复杂度。第7章是实例项目,介绍如何使用基本的JavaScript语法解决实际问题。第8章介绍如何处理错误,第9章介绍正则表达式与JavaScript中正则表达式的用法。第10章介绍如何在JavaScript中构建使用模块。第11章作为第一部分的结尾,介绍如何设计并构建一个程序语言解析器。第二部分主要讲解如何在浏览器中运用JavaScript。第12章介绍JavaScript与浏览器的历史与关系。第13章介绍了浏览器的DOM模型。第14章介绍如何使用JavaScript处理DOM事件。第15章介绍如何通过操纵DOM来编写一个浏览器中的2D游戏。第16章介绍HTML5中的画布,并介绍如何使用JavaScript绘图。第17章介绍HTTP协议,以及如何使用JavaScript进行网络通信。第18章介绍表单与其使用方法。第19章是另一个实例项目,介绍如何开发一个基于HTML的绘图程序,是对第二部分的总结。第三部分是提高部分。第20章介绍如何使用Node.js开发Web服务,体现出JavaScript的强大威力。第21章介绍如何使用JavaScript完成一个完整的Web应用。最后一章则介绍提升JavaScript性能的一些基本原则与方法,并给出一些实例。

Author Description

作者简介

马尔奇·哈弗贝克(Marijn Haverbeke),

JavaScript程序员,通晓多种编程语言,在Web开发方面积累了丰富的经验,在JavaScript领域颇有影响力。此外,他创建并维护着多个流行的开源项目,如CodeMirror编辑器和Tern类型推导引擎等。


译者简介

卢誉声,软件工程师,擅长C++多线程编程和实时分布式系统架构。曾在思科系统(中国)研发中心云产品研发部工作多年。他曾参与服务器后端、前端以及SDK的设计与研发工作,在大规模分布式系统设计与实现、性能调优、高可用性和自动化等方面积累了丰富的敏捷实践与开发经验。现在在美国某IT/互联网公司工作,从事C++底层通信系统设计与研发。此外,他从事C/C++研发工作,对Java、JavaScript、Lua以及移动开发平台等也有一定研究。

Catalogue

译者序
赞誉
前言
第一部分JavaScript编程语言
第1章值、类型和运算符 2
1.1值 2
1.2数字 3
1.3字符串 5
1.4一元运算符 6
1.5布尔值 6
1.6未定义值 8
1.7自动类型转换 8
1.8本章小结 10
第2章程序结构 11
2.1表达式和语句 11
2.2变量 12
2.3关键字和保留字 13
2.4环境 14
2.5函数 14
2.6console.log函数 14
2.7返回值 15
2.8prompt和confirm函数 15
2.9控制流 16
2.10条件执行 16
2.11while和do循环 17
2.12代码缩进 19
2.13for循环 19
2.14跳出循环 20
2.15更新变量的简便方法 21
2.16switch条件分支 21
2.17大写 22
2.18注释 22
2.19本章小结 23
2.20习题 23
第3章函数 25
3.1定义函数 25
3.2参数和作用域 26
3.3嵌套作用域 27
3.4函数值 28
3.5符号声明 29
3.6调用栈 29
3.7可选参数 31
3.8闭包 31
3.9递归 32
3.10添加新函数 35
3.11函数及其副作用 37
3.12本章小结 37
3.13习题 38
第4章数据结构:对象和数组 39
4.1松鼠人 39
4.2数据集 40
4.3属性 41
4.4方法 41
4.5对象 42
4.6可变性 44
4.7松鼠人的记录 45
4.8计算关联性 47
4.9对象映射 48
4.10分析结果 49
4.11详解数组 50
4.12字符串及其属性 51
4.13arguments对象 52
4.14Math对象 53
4.15全局对象 55
4.16本章小结 55
4.17习题 55
第5章高阶函数 58
5.1抽象 59
5.2数组遍历抽象 59
5.3高阶函数 61
5.4参数传递 62
5.5JSON 63
5.6数组过滤 64
5.7使用map函数转换数组 65
5.8使用reduce进行数据汇总 65
5.9可组合性 66
5.10性能开销 67
5.11曾曾曾曾……祖父 67
5.12绑定 70
5.13本章小结 70
5.14习题 71
第6章深入理解对象 72
6.1历史 72
6.2方法 73
6.3原型 74
6.4构造函数 75
6.5覆盖继承的属性 76
6.6原型污染 77
6.7无原型对象 79
6.8多态 79
6.9绘制表格 80
6.10Getter与Setter 84
6.11继承 85
6.12instanceof运算符 87
6.13本章小结 87
6.14习题 88
第7章项目实战:构建电子生态
系统 89
7.1定义 89
7.2描述世界 90
7.3动物的编程接口 91
7.4World对象 93
7.5this及其作用域 94
7.6赋予生命 96
7.7动物的爬行动作 98
7.8更多动物 98
7.9更逼真的生态系统仿真 99
7.10动作处理器 100
7.11充实这个新世界 102
7.12让虚拟世界生机盎然 103
7.13习题 104
第8章处理缺陷与错误 105
8.1开发人员造成的问题 105
8.2严格模式 106
8.3测试 107
8.4调试 108
8.5错误传播 109
8.6异常 110
8.7异常后清理 111
8.8选择性捕获 112
8.9断言 114
8.10本章小结 115
8.11习题 115
第9章正则表达式 116
9.1创建正则表达式 116
9.2匹配测试 117
9.3匹配字符集 117
9.4部分模式重复 118
9.5子表达式分组 119
9.6匹配和分组 119
9.7日期类型 120
9.8单词和字符串边界 121
9.9选项模式 122
9.10匹配原理 122
9.11回溯 123
9.12replace方法 125
9.13贪婪模式 126
9.14动态创建RegExp对象 127
9.15search方法 128
9.16lastIndex属性 128
9.17解析INI文件 129
9.18国际化字符 131
9.19本章小结 131
9.20习题 132
第10章模块 134
10.1模块的好处 134
10.2使用函数作为命名空间 136
10.3使用对象作为接口 137
10.4与全局作用域分离 138
10.5将数据作为代码执行 138
10.6require函数 139
10.7模块加载过慢的问题 140
10.8接口设计 143
10.9本章小结 144
10.10习题 145
第11章项目实战:开发编程语言 147
11.1解析 147
11.2代码执行器 150
11.3特殊形式 151
11.4环境 153
11.5函数 154
11.6编译 155
11.7站在别人的肩膀上 155
11.8习题 156
第二部分在浏览器中使用JavaScript
第12章浏览器中的JavaScript 160
12.1网络和Internet 160
12.2Web 161
12.3HTML 162
12.4HTML和JavaScript 164
12.5沙箱 164
12.6兼容性与浏览器之争 165
第13章文档对象模型 166
13.1文档结构 166
13.2树 167
13.3标准 168
13.4通过树结构访问节点 169
13.5查找元素 170
13.6修改文档 170
13.7创建节点 171
13.8属性 173
13.9布局 175
13.10样式 176
13.11层叠样式 177
13.12查询选择器 178
13.13位置与动画 179
13.14本章小结 181
13.15习题 181
第14章处理事件 183
14.1事件处理器 183
14.2事件与DOM节点 184
14.3事件对象 184
14.4传播 185
14.5默认动作 186
14.6按键事件 187
14.7鼠标点击 188
14.8鼠标移动 189
14.9滚动事件 191
14.10焦点事件 192
14.11加载事件 192
14.12脚本执行时间线 193
14.13设置定时器 193
14.14降频 194
14.15本章小结 195
14.16习题 196
第15章项目实战:平台游戏 198
15.1游戏 198
15.2实现技术 199
15.3关卡 199
15.4读取关卡 200
15.5活动元素 201
15.6当封装成为负担 203
15.7绘图 204
15.8动作与冲突 208
15.9活动元素与动作 209
15.10跟踪按键 213
15.11运行游戏 213
15.12习题 215
第16章使用canvas绘图 217
16.1SVG 217
16.2canvas元素 218
16.3填充与描边 219
16.4路径 220
16.5曲线 221
16.6绘制饼状图 224
16.7文本 225
16.8图像 225
16.9变换 227
16.10存储与清除图像的变换状态 228
16.11回到游戏 230
16.12选择图像接口 234
16.13本章小结 235
16.14习题 235
第17章HTTP协议概述 237
17.1协议简介 237
17.2浏览器和HTTP 238
17.3XMLHttpRequest 240
17.4发送请求 240
17.5异步请求 241
17.6获取XML数据 242
17.7HTTP沙箱 242
17.8抽象请求 243
17.9Promise 245
17.10运用HTTP 247
17.11安全和HTTPS 247
17.12本章小结 248
17.13习题 248
第18章表单和表单域 250
18.1域 250
18.2聚焦 252
18.3禁用域 252
18.4作为整体的表单 253
18.5文本域 254
18.6选择框和单选框 255
18.7选择域 256
18.8文件域 257
18.9客户端保存数据 259
18.10本章小结 261
18.11习题 261
第19章项目实战:绘图程序 263
19.1实现 263
19.2建立DOM 264
19.3基础 265
19.4工具选择 265
19.5颜色和画刷大小 267
19.6保存 269
19.7加载图片文件 270
19.8完成 271
19.9习题 272
第三部分高级主题
第20章Node.js 276
20.1背景 276
20.2异步性 277
20.3node命令 278
20.4模块 278
20.5使用NPM安装 279
20.6文件系统模块 281
20.7HTTP模块 282
20.8流 283
20.9简单的文件服务器 284
20.10错误处理 288
20.11本章小结 290
20.12习题 290
第21章项目实战:技能分享网站 293
21.1设计 293
21.2长轮询 294
21.3HTTP接口 295
21.4服务器 297
21.5客户端 303
21.6习题 309
第22章JavaScript和性能 311
22.1分阶段编译 311
22.2图形布局 312
22.3定义图 313
22.4第一个力导向布局函数 314
22.5性能分析 316
22.6函数内联 317
22.7退化回旧式循环 318
22.8避免工作 319
22.9产生更少的垃圾 319
22.10垃圾回收 320
22.11修改对象 321
22.12动态类型 322
22.13本章小结 323
22.14习题 324

Introduction

本书讲解如何通过编程来让计算机执行任务。时至今日,计算机就像螺丝刀一样随处可见,但相比于螺丝刀而言,计算机中包含了更多隐含的复杂性,因此也更加难以理解和操作。许多人仍对计算机感到陌生和恐惧。
一边是有血有肉的具备社交才能和空间推理能力的人类,另一边是冰冷的处理二进制数据的计算机,这两者该如何进行交互呢?我们已经找到了两种高效的方式来搭建人类与计算机之间通信的桥梁。种方法是模拟现实世界来构建与计算机交互的接口,这样我们就可以动动手指来操作计算机屏幕上的图形。对于一般的机器交互来说,这种方式非常实用。
但是,我们在使用这种方法的情况下,只能通过点击操作实现接口设计者预先定义好的功能。幸运的是,我们可以利用人类的语言天赋来教会计算机一门语言,实现开放式接口。比如指挥计算机执行任意一种任务。
人类语言可以用多种方式来组合单词和短语,表述出不同的信息。虽然计算机语言的语法灵活性没那么高,但也是采用了类似的原则进行设计的。
在过去的20年中,越来越多的人开始使用计算机来进行简易的运算,曾经作为默认人机交互方式的命令行接口,现如今已经被图形界面所取代。但只要你细心观察,就会发现基于语言的接口仍在那里。比如JavaScript语言,你几乎可以在每个网页浏览器中找到它的身影,而消费者的设备都可以执行这门语言。
本书的主要内容就是介绍这门语言,在阅读完本书后,相信你可以通过该语言来对计算机编程。
关于程序设计不愤不启,不悱不发,举一隅不以三隅反,则不复也。
—孔子除了讲解JavaScript之外,本书也会介绍一些程序设计的基本原则。程序设计还是比较复杂的。编程的基本规则通常简单清晰,但在这些基本规则之上构建的程序却容易变得复杂,导致程序产生了自己的规则和复杂性。即便程序是按照你自己的思路去构建的,你也有可能迷失在代码之间。
在阅读本书时,你有可能会觉得书中的概念难以理解。如果你刚刚开始学习编程,那么你估计还有不少东西需要掌握呢。如果你想将所学知识融会贯通,那么就需要去多参考和学习一些资料。
是否付出必要的努力完全取决于你自己。当你阅读本书的时候发现任何难点,千万不要轻易就对自己的能力下结论。只要能坚持下去,你就是好样的。稍做休息,复习一下所学的知识点,确保自己阅读并理解了示例程序和相关的练习。学习是一项艰巨的任务,但你掌握的所有知识都属于你自己,而且今后的学习道路会愈加轻松。
计算机程序员对其创造的宇宙负全部责任,因为他们是创造者。以计算机程序的形式,可创造出无限复杂的宇宙。
—约瑟夫·魏泽鲍姆《计算机的威力与人类的理性》一个程序有很多含义:它是开发人员编写的一段文本、计算机执行的一段指令集合、计算机内存当中的数据以及控制内存中数据的操作集合。我们通常很难将程序与我们日常生活中熟悉的事物进行对比。有一种表面上比较恰当的比喻,即将程序视作包含许多组件的机器,为了让机器正常工作,这些组件通过内部通信来实现整个机器的正常运转。
计算机正是运行这些非物质机器的载体。计算机本身并不能实现多么复杂的功能,但计算机之所以有用是因为它们的运算速度非常快。而程序的作用就是将这些看似简单的动作组合起来,然后实现复杂的功能。
对于我们当中的某些人来说,编写计算机程序是一种极大的乐趣。程序是开发人员思想的结晶。编写程序不需要什么物质投入,它很轻量级,通过我们的双手创造。
但如果不稍加注意,程序的体积和复杂度就会失去控制,甚至代码的编写者也会感到迷惑。在可控的范围内编写程序是编程过程中首要解决的问题。当程序运行时,一切都是那么美好。编程的精粹就在于如何更好地控制复杂度。质量高的程序的复杂度都不会太高。
很多开发人员认为,控制程序复杂度的好方法就是避免使用不熟悉的技术。他们制定了严格的规则(“佳实践”),定义了程序应该编写成什么样子。而激进分子更是觉得,如果程序没有按照这些规则进行编写,那么编写这些程序的开发人员就是不合格的。
这极大地降低了程序的丰富程度!将程序简化成一些直截了当的代码,并完全禁止人们编写丰富多样的程序。正是因为程序当中有那么多不同的思想和未经探索的领域,才使得编程技术如此令人着迷。诚然,程序设计的世界中充满各色陷阱,让一个缺乏经验的程序员陷入其中非常危险,但这也只是意味着在前行过程中你需要小心谨慎,时刻保证头脑清醒,毕竟我们还要面对许多新挑战,探索更多新的领域。而那些不愿探索的人只会停滞不前,淡忘编程的乐趣,厌倦自己的事业。
为什么编程语言如此重要在计算技术发展伊始,并没有编程语言这个概念。程序看起来就像这样:
该程序计算数字1~10之和,并打印出结果:1 + 2 + … + 10 = 55。该程序可以运行在一个简单的机器上。在早期计算机上编程时,我们需要在正确的位置设置大量开关阵列,或在纸带上穿孔并将纸带输入计算机中。你可以想象这个过程是多么冗长乏味且易于出错。即便是编写非常简单的程序,也需要有经验的人耗费很大精力才能完成。编写复杂的程序则更是难上加难。
当然了,手动输入这些晦涩难懂的位序列(1和0)来编写程序的确能让程序员感到很有成就感,而且能给你的职业带来极大的满足感。
在上面的程序中,每行都包含一条指令。我们可以用中文来描述这些指令:
1. 将数字0存储在内存地址中第0的位置。
2. 将数字1存储在内存地址中第1的位置。
3. 将内存地址中第1的位置的值存储在内存地址中第2的位置。
4. 将内存地址中第2的位置的值减去数字11。
5. 如果内存地址第2的位置的值是0,则跳转到指令9。
6. 将内存地址第1的位置的值加到内存地址第0的位置上。
7. 将内存地址第1的位置上的值加上数字1。
8. 跳转到指令3。
9. 输出内存地址第0的位置上的值。
虽说这已经比一大堆位序列要好读了许多,但仍然不尽如人意。或许使用名字代替数字作为指令和内存地址的标示符,可以进一步提高代码的可读性。
现在你能看出该程序是如何工作的吗?前两行代码初始化两个内存位置的值:total用于保存累加计算结果,而count则用于记录当前数字。你可能觉得compare的那行代码看起来有些奇怪。程序想根据count是否等于11来决定是否应该停止运行。因为我们的机器相当原始,所以只能测试一个数字是否为0,并根据测试结果做出判断(是否跳转)。因此程序用名为compare的内存位置存放count – 11的值,并根据该值是否为0决定是否跳转。接下来两行将count的值累加到结果上,并将count加1,直到count等于11为止。
下面使用JavaScript重新编写了上面的程序:
这个版本的程序得到了一些改进。更为重要的是,我们再也不需要指定程序如何来回跳转了,而是由while语句负责完成这个任务。只要我们给予的条件成立,while语句就会不停地执行其下方的语句块(包裹在大括号中)。而我们给予的条件是count <= 10,意思是“count小于等于10”。我们再也不需要创建临时的值并将其与0比较,那样的代码十分烦琐。编程语言的一项职责就是帮助我们处理这些烦琐无趣的逻辑。
在程序的结尾,也就是while语句结束后,我们使用console.log操作来输出结果。
后,我们恰好有range和sum这类方便的操作。下面代码中的range函数用于创建数字集合,sum函数用于计算数字集合之和:
我们可以从这里了解到,同一个程序可以用不同的方式进行编写,代码的长度可长可短,而可读性可高可低。个版本的程序晦涩难懂,而后一个版本的程序则接近于人类语言的表达方式:将1~10范围内的数字之和记录下来(我们会在后面的章节中详细介绍如何编写sum和range这样的函数)。
优秀的编程语言可以为开发人员提供更高层次的抽象,使用类似于人类语言的方式来与计算机进行交互。它还可以提供便捷的语句块(比如while和console.log),以避免开发人员编写烦琐的代码细节。它甚至可以让你定义自己的语句块(比如sum和range函数),并提供方便的方法来编写这些语句块。
什么是JavaScriptJavaScript诞生于1995年。起初,Netscape Navigator浏览器将其运用在网页上添加程序。自此以后,各类主流图形网页浏览器均采用了JavaScript。JavaScript使得现代网页应用程序成为可能—使用JavaScript可以直接与用户交互,从而避免每一个动作都需要重新载入页面。但有许多传统网站也会使用JavaScript来提供实时交互以及更加智能的表单功能。
JavaScript其实和名为Java的程序设计语言没有任何关系。起了这么一个相似的名字完全是市场考虑使然,这并非是一个明智的决定。当JavaScript出现时,Java语言已在市场上得到大力推广且拥有了极高人气,因此某些人觉得依附于Java的成功是个不错的主意。而我们现在已经无法摆脱这个名字了。
在JavaScript被广泛采用之后,为了确保所有声称支持JavaScript的软件都使用同一种语言,ECMA国际制订了一份标准文档来描述JavaScript的工作行为,标准化完成后,该标准被称为ECMAScript标准。实际上,术语ECMAScript和 JavaScript可以交换使用。它们不过是同一种语言的两个名字而已。
许多人会说JavaScript这样那样的不好。这其中有很多这样的言论都是正确的。当被要求次使用JavaScript编写代码时,我当时就觉得这门语言难以驾驭。JavaScript接受我输入的任何代码,但是又使用和我的想法完全不同的方式来解释代码。由于我没有任何线索知道我之前做了什么,因此我需要做出更多工作,但这也就存在一个实际问题:我们可以自由使用JavaScript,而这种自由却几乎没有限度。这种设计其实是希望初学者更容易使用JavaScript编写程序。但实际上,系统不会指出我们错在何处,因此从程序中找出问题变得更加棘手。
但这种自由性也有其优势,许多技术在更为严格的语言中不可能实现,而在JavaScript中则留下了实现的余地,正如你看到的那样(比如第10章),有些优势可以弥补JavaScript的一些缺点。在正确地学习JavaScript并使用它工作了一段时间后,我真正喜欢上了JavaScript。
JavaScript版本众多。大约在2000~2010年间,这正是JavaScript飞速发展的时期,浏览器支持多的是ECMAScript 3。在此期间,ECMA着手制定ECMAScript 4,这是一个雄心勃勃的版本,ECMA计划在这个版本中加入许多彻底的改进与扩展。但由于ECMAScript 3被广泛使用,这种过于激进的修改必然会遭遇重重阻碍,后ECMA不得不于2008年放弃了版本4的制定,因此ECMA于2009年发布了改进较少的ECMAScript 5。目前所有主流浏览器均支持ECMAScript 5,因此本书着重介绍该版本。版本6的制定工作即也将完成,而且一些浏览器已经开始支持该版本的一些新特性了。
Web浏览器并不是唯一一个可以运行JavaScript的平台。有些数据库,比如MongoDB和CouchDB,也使用JavaScript作为脚本语言和查询语言。一些桌面和服务器开发的平台,特别是Node.js项目(第20章介绍),也在浏览器之外提供了强大的JavaScript开发环境。
代码及相关工作代码是程序的文本内容。本书多数章节都介绍了大量代码。根据个人经验,阅读与编写代码是学习程序设计过程中必不可少的一部分,因此万万不可走马观花般地阅读代码,而应该认真阅读并理解每个示例。刚开始使用这种方式可能会速度较慢并为代码所困惑,但我坚信你很快就可以熟能生巧。对待习题的方法也应该一样。除非你确实已经编写代码解决了问题,否则不要假设你已经理解了问题。
建议读者应尝试在实际的JavaScript解释器中执行习题代码。这样一来,你就可以马上获知代码工作情况的反馈,而且我希望读者去做更多的试验,而不仅仅局限于习题的要求。
可以在https://eloquentjavascript.net/中查阅本书的在线版本,并运行和实验本书中的代码。也可以在在线版本中点击任何代码示例来编辑、运行并查看其产生的输出。在做习题时,你可以访问https://eloquentjavascript.net/code/,该网址会提供每个习题的初始代码,让你专心于解答习题。
如果想要在本书提供的沙箱以外执行本书代码,需要稍加注意。许多的示例是独立的,而且可以在任何JavaScript环境下运行。但后续章节的代码大多数都是为特定环境(浏览器或者Node.js)编写的,而且只能在这些特定环境下执行代码。此外,许多章节定义了更大的程序,这些章节中出现的代码片段会互相依赖或是依赖于一些外部文件。本书网站的沙箱提供了zip压缩文件的链接,该文件包含了所有运行特定章节代码所需的脚本和数据文件。
章节介绍本书包括三个部分。前11章讨论JavaScript语言本身的一些特性。接下来的8章讨论网页浏览器和JavaScript在网页编程中的实践。后两章专门讲解另一个使用JavaScript编程的环境—Node.js。
纵观本书,共有5个项目实战章,用于讲解规模较大的示例程序,你可以通过这些章来仔细品味真实的编程过程。根据项目出现次序,我们会陆续构建人工生命模拟项目、程序设计语言项目、平台游戏项目、绘图程序和一个动态网站项目。
本书介绍编程语言时,首先使用4章来介绍JavaScript语言的基本结构,包括控制结构(比如在本前言中看到的while单词)、函数(编写你自己的操作)和数据结构。此后你就可以编写简单的程序了。接下来,第5章和第6章介绍函数和对象的运用技术,以编写更加抽象的代码并以此来控制复杂度。
介绍完个项目实战之后,将会继续讲解处理错误与修复的方法、正则表达式(处理文本数据的重要工具)与模块化(解决复杂度的问题)。第二个项目实战章则是对本书部分的总结。
第二部分(第12章~第19章),阐述了浏览器JavaScript中的一些工具。你将会学到在屏幕上显示某些元素的方法(第13章与第16章),响应用户输入的方法(第14章与18章)和通过网络通信的方法(第17章)。该部分又有两个项目实战章。
此后,第20章阐述Node.js,而第21章使用该工具构建一个简单的网页系统。
后,第22章讲解一些在优化JavaScript程序运行速度时需要注意的事项。
本书版式约定本书中存在大量代码,程序(包括你迄今为止看到的一些示例)代码的字体如下所示:
为了展示程序产生的输出,本书常在代码后编写代码期望输出,输出结果前会加上两个反斜杠和一个箭头。
后,祝各位好运!


Specifications

Brand Jingdong book
Brand Origin China

Disclaimer

Product packaging, specifications and price are subject to change without notice. All information about the products on our website is provided for information purposes only. Please always read labels, warnings and directions provided with the product before use.

View Full Terms of Use
Add to favorites
{{ $isZh ? coupon.coupon_name_sub : coupon.coupon_ename_sub | formatCurrency }}
{{__("Buy Directly")}} {{ itemCurrency }}{{ item.directly_price }}
Quantity
{{ quantity }}
{{ instockMsg }}
{{ limitText }}
{{buttonTypePin == 3 ? __("Scan to view more PinGo") : __("Scan to start")}}
Sold by JD@CHINA
Ship to
{{ __("Ship to United States only") }}
Free shipping over 69
Genuine guarantee

Added to Cart

Keep Shopping

More to Consider

{{ item.brand_name }}

{{ item.item_name }}

{{ item.currency }}{{ item.market_price }}

{{ item.currency }}{{ item.unit_price }}

{{ item.currency }}{{ item.unit_price }}

Coupons

{{ coupon.coupon_name_new | formatCurrency }}
Clip Clipped Over
{{ getCouponDescStr(coupon) }}
{{ coupon.use_time_desc }}
Expires soon {{ formatTime(coupon.use_end_time) }}

Share this item with friends

Cancel

Yami Gift Card

Get this exclusive deal when paying with gift card

Terms and Conditions

Gift card deals are special offers for selected products;

The gift card deals will automatically be activated if a customer uses gift card balance at check out and the balance is sufficient to pay for the total price of the shopping cart products with gift card deals;

You will not be able to activate the gift card deals if you choose other payment methods besides gift card. The products will be purchased at their normal prices;

If your account balance is not enough to pay for the products with gift card deals, you can choose to reload your gift card balance by clicking on the Reload button at either shopping cart page or check out page;

Products that have gift card deals can be recognized by a special symbol showing 'GC Deal';

For any additional questions or concerns, please contact our customer service;

Yamibuy reserves the right of final interpretation.

Sold by Yami

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

Yami is committed to provide our customers with a peace of mind when purchasing from us. Most items shipped from Yamibuy.com can be returned within 30 days of receipt of shipment (For Food, Beverages, Snacks, Dry Goods, Health supplements, Fresh Grocery and Perishables Goods, within 7 days of receipt of shipment due to damages or quality issues; To ensure that every customer receives safe and high-quality products, we do not provide refunds or returns for beauty products once they have been opened or used, except in the case of quality issues; Some products may have different policies or requirements associated with them, please see below for products under special categories, or contact Yami Customer Service for further assistance).
Thank you for your understanding and support.

Learn More

Sold by Yami

Terms and Conditions of Yami E-Gift Card

If you choose “Redeem automatically” as your delivery method, your gift card balance will be reload automatically after your order has been processed successfully;

If you choose “Send to Email”as your delivery method, the card number and CVV will be sent to the email address automatically;

Any user can use the card number and CVV to redeem the gift card, please keep your gift card information safely. If you have any trouble receiving email, please contact Yami customer service;

Yami gift card can be used to purchase both Yami owned or Marketplace products;

Yami gift card will never expire;

Yami gift card balance does not have to be used up at once;

All rights reserved by Yami.

Return Policy

Gift card that has already been consumed is non-refundable.

Sold by JD@CHINA

Service Guarantee

Yami Free Shipping over $49
Yami Easy Returns
Yami Ships from United States

Shipping

  • United States

    Standard Shipping is $5.99 (Excluding Alaska & Hawaii). Free on orders of $49 or more.

    Local Express is $5.99 (Available in Parts of CA, NJ, MA & PA). Free on orders of $49 or more.

    2-Day Express (Includes Alaska & Hawaii) starts at $19.99.

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Sold by JD@CHINA

Service Guarantee

Yami Cross-store Free Shipping over $69
Yami 30-days Return

Yami-China FC

Yami has a consolidation warehouse in China which collects multiple sellers’ packages and combines to one order. Our Yami consolidation warehouse will directly ship the packages to your door. Cross-store free shipping over $69.

Return Policy

You may return products within 30 days upon receiving the products. Sellers take responsibilities for any wrong shipment or missing items. Packing needs to be unopened for any other than quality issues return. We promise to pack carefully, but because goods are taking long journey to destinations, simple damages to packaging may occur. Any damages not causing internal goods quality problems are not allowed to return. If you open the package and any quality problem is found, please contact customer service within three days after receipt of goods.

Shipping Information

Yami Consolidation Service Shipping Fee $9.99(Free shipping over $69)

Sellers in China will ship their orders within 1-2 business days once the order is placed. Packages are sent to our consolidation warehouse in China and combined there. Our Yami consolidation warehouse will directly ship the packages to you via UPS. The average time for UPS to ship from China to the United States is about 10 working days and it can be traced using the tracking number. Due to the pandemic, the delivery time may be delayed by about 5 days. The package needs to be signed by the guest. If the receipt is not signed, the customer shall bear the risk of loss of the package.

Sold by JD@CHINA

Service Guarantee

Free shipping over 69
Genuine guarantee

Shipping

Yami Consolidated Shipping $9.99(Free shipping over $69)


Seller will ship the orders within 1-2 business days. The logistics time limit is expected to be 7-15 working days. In case of customs clearance, the delivery time will be extended by 3-7 days. The final receipt date is subject to the information of the postal company.

Yami Points information

All items are excluding from any promotion or points events on Yamibuy.com

Return Policy

You may return product within 30 days upon receiving the product. Items returned must be new in it's original packing, including the original invoice for the purchase. Customer return product at their own expense.

Yami

Download the Yami App

Back Top

Recommended for You

About the brand

Jingdong book

为您推荐

Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折
Yami
欣葉
2种选择
欣叶 御大福 芋头麻薯 180g

周销量 600+

$1.66 $1.99 83折

Reviews{{'('+ commentList.posts_count + ')'}}

Have your say. Be the first to help other guests.

Write a review
{{ totalRating }} Write a review
  • {{i}} star

    {{i}} stars

    {{ parseInt(commentRatingList[i]) }}%

Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}
Yami Yami
{{ comment.user_name }}

{{ showTranslate(comment) }}Show Less

{{ strLimit(comment,800) }}Show more

Show Original

{{ comment.content }}

Yami
Show All

{{ formatTime(comment.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ comment.likes_count }} {{ comment.likes_count }} {{ comment.reply_count }} {{comment.in_user==uid ? __('Delete') : __('Report')}}

No related comment~

Review

Yami Yami

{{ showTranslate(commentDetails) }}Show Less

{{ strLimit(commentDetails,800) }}Show more

Show Original

{{ commentDetails.content }}

Yami
Show All

{{ formatTime(commentDetails.in_dtm) }} VERIFIED PURCHASE {{groupData}}

{{ commentDetails.likes_count }} {{ commentDetails.likes_count }} {{ commentDetails.reply_count }} {{commentDetails.in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Comments{{'(' + replyList.length + ')'}}

Yami Yami

{{ showTranslate(reply) }}Show Less

{{ strLimit(reply,800) }}Show more

Show Original

{{ reply.reply_content }}

{{ formatTime(reply.reply_in_dtm) }}

{{ reply.reply_likes_count }} {{ reply.reply_likes_count }} {{ reply.reply_reply_count }} {{reply.reply_in_user==uid ? __('Delete') : __('Report')}}

Please write at least one word

Cancel

That’s all the comments so far!

Write a review
How would you rate this item?

Please add your comment.

  • A nice nickname will make your comments more popular!
  • The nickname in your account will be changed to the same as here.
Thanks for your review
Our community rely on great reviews like yours to find the best of Asia.

Report

If you find this content inappropriate and think it should be removed from the Yami.com site, let us know please.

Cancel

Are you sure to delete your review?

Cancel

You’ve Recently Viewed

About the brand

Jingdong book