From ed3b9030f018f245cbfcf142704e0d6ab72ea76b Mon Sep 17 00:00:00 2001 From: Fengyuan Chen Date: Thu, 3 Jan 2019 17:58:43 +0800 Subject: [PATCH 001/224] docs: fix typos and styles --- docs/async/general.md | 7 +++---- docs/async/timer.md | 1 - docs/basic/grammar.md | 7 +++---- docs/basic/history.md | 5 ++--- docs/basic/introduction.md | 5 ++--- docs/bom/cookie.md | 1 - docs/bom/engine.md | 14 +++++++------- docs/bom/file.md | 2 +- docs/bom/form.md | 11 +++++------ docs/bom/history.md | 3 +-- docs/bom/indexeddb.md | 10 +++++----- docs/bom/location.md | 3 +-- docs/bom/navigator.md | 1 - docs/bom/same-origin.md | 3 +-- docs/bom/storage.md | 2 +- docs/bom/webworker.md | 1 - docs/bom/window.md | 2 +- docs/bom/xmlhttprequest.md | 6 +++--- docs/dom/attributes.md | 1 - docs/dom/css.md | 3 +-- docs/dom/document.md | 1 - docs/dom/general.md | 1 - docs/dom/node.md | 3 +-- docs/dom/nodelist.md | 3 +-- docs/dom/parentnode.md | 1 - docs/dom/text.md | 5 ++--- docs/elements/button.md | 1 - docs/elements/form.md | 1 - docs/elements/image.md | 1 - docs/elements/option.md | 1 - docs/elements/video.md | 26 +++++++++++++------------- docs/events/common.md | 1 - docs/events/drag.md | 1 - docs/events/event.md | 3 +-- docs/events/eventtarget.md | 1 - docs/events/form.md | 1 - docs/events/globaleventhandlers.md | 1 - docs/events/keyboard.md | 3 +-- docs/events/model.md | 1 - docs/events/mouse.md | 1 - docs/events/progress.md | 1 - docs/events/touch.md | 1 - docs/features/error.md | 4 ++-- docs/features/style.md | 9 ++++----- docs/oop/new.md | 1 - docs/oop/object.md | 2 +- docs/oop/this.md | 1 - docs/operators/bit.md | 3 +-- docs/operators/boolean.md | 1 - docs/operators/comparison.md | 1 - docs/operators/priority.md | 5 ++--- docs/stdlib/array.md | 6 +++--- docs/stdlib/attributes.md | 1 - docs/stdlib/date.md | 6 +++--- docs/stdlib/json.md | 2 +- docs/stdlib/math.md | 1 - docs/stdlib/object.md | 6 +++--- docs/stdlib/regexp.md | 4 ++-- docs/stdlib/string.md | 5 ++--- docs/types/function.md | 10 +++++----- docs/types/general.md | 2 +- docs/types/number.md | 7 +++---- 62 files changed, 89 insertions(+), 135 deletions(-) diff --git a/docs/async/general.md b/docs/async/general.md index 022f8c8..3c1ac35 100644 --- a/docs/async/general.md +++ b/docs/async/general.md @@ -22,7 +22,7 @@ JavaScript 之所以采用单线程,而不是多线程,跟历史有关系。 同步任务是那些没有被引擎挂起、在主线程上排队执行的任务。只有前一个任务执行完毕,才能执行后一个任务。 -异步任务是那些被引擎放在一边,不进入主线程、而进入任务队列的任务。只有引擎认为某个异步任务可以执行了(比如 Ajax 操作从服务器得到了结果),该任务(采用回调函数的形式)才会进入主线程执行。排在异步任务后面的代码,不用等待异步任务结束会马上运行,也就是说,异步任务不具有”堵塞“效应。 +异步任务是那些被引擎放在一边,不进入主线程、而进入任务队列的任务。只有引擎认为某个异步任务可以执行了(比如 Ajax 操作从服务器得到了结果),该任务(采用回调函数的形式)才会进入主线程执行。排在异步任务后面的代码,不用等待异步任务结束会马上运行,也就是说,异步任务不具有“堵塞”效应。 举例来说,Ajax 操作可以当作同步任务处理,也可以当作异步任务处理,由开发者决定。如果是同步任务,主线程就等着 Ajax 操作返回结果,再往下执行;如果是异步任务,主线程在发出 Ajax 请求以后,就直接往下执行,等到 Ajax 操作有了结果,主线程再执行对应的回调函数。 @@ -101,11 +101,11 @@ function f1() { 上面代码中,`f1.trigger('done')`表示,执行完成后,立即触发`done`事件,从而开始执行`f2`。 -这种方法的优点是比较容易理解,可以绑定多个事件,每个事件可以指定多个回调函数,而且可以”[去耦合](http://en.wikipedia.org/wiki/Decoupling)“(decoupling),有利于实现模块化。缺点是整个程序都要变成事件驱动型,运行流程会变得很不清晰。阅读代码的时候,很难看出主流程。 +这种方法的优点是比较容易理解,可以绑定多个事件,每个事件可以指定多个回调函数,而且可以“[去耦合](http://en.wikipedia.org/wiki/Decoupling)”(decoupling),有利于实现模块化。缺点是整个程序都要变成事件驱动型,运行流程会变得很不清晰。阅读代码的时候,很难看出主流程。 ### 发布/订阅 -事件完全可以理解成”信号“,如果存在一个”信号中心“,某个任务执行完成,就向信号中心”发布“(publish)一个信号,其他任务可以向信号中心”订阅“(subscribe)这个信号,从而知道什么时候自己可以开始执行。这就叫做”[发布/订阅模式](http://en.wikipedia.org/wiki/Publish-subscribe_pattern)”(publish-subscribe pattern),又称“[观察者模式](http://en.wikipedia.org/wiki/Observer_pattern)”(observer pattern)。 +事件完全可以理解成“信号”,如果存在一个“信号中心”,某个任务执行完成,就向信号中心“发布”(publish)一个信号,其他任务可以向信号中心“订阅”(subscribe)这个信号,从而知道什么时候自己可以开始执行。这就叫做”[发布/订阅模式](http://en.wikipedia.org/wiki/Publish-subscribe_pattern)”(publish-subscribe pattern),又称“[观察者模式](http://en.wikipedia.org/wiki/Observer_pattern)”(observer pattern)。 这个模式有多种[实现](http://msdn.microsoft.com/en-us/magazine/hh201955.aspx),下面采用的是 Ben Alman 的 [Tiny Pub/Sub](https://gist.github.com/661855),这是 jQuery 的一个插件。 @@ -278,4 +278,3 @@ launcher(); 上面代码中,最多只能同时运行两个异步任务。变量`running`记录当前正在运行的任务数,只要低于门槛值,就再启动一个新的任务,如果等于`0`,就表示所有任务都执行完了,这时就执行`final`函数。 这段代码需要三秒完成整个脚本,处在串行执行和并行执行之间。通过调节`limit`变量,达到效率和资源的最佳平衡。 - diff --git a/docs/async/timer.md b/docs/async/timer.md index 89b6421..8a56953 100644 --- a/docs/async/timer.md +++ b/docs/async/timer.md @@ -363,4 +363,3 @@ timer = setTimeout(func, 0); 上面代码有两种写法,都是改变一个网页元素的背景色。写法一会造成浏览器“堵塞”,因为 JavaScript 执行速度远高于 DOM,会造成大量 DOM 操作“堆积”,而写法二就不会,这就是`setTimeout(f, 0)`的好处。 另一个使用这种技巧的例子是代码高亮的处理。如果代码块很大,一次性处理,可能会对性能造成很大的压力,那么将其分成一个个小块,一次处理一块,比如写成`setTimeout(highlightNext, 50)`的样子,性能压力就会减轻。 - diff --git a/docs/basic/grammar.md b/docs/basic/grammar.md index 3dd6d07..fdf6f33 100644 --- a/docs/basic/grammar.md +++ b/docs/basic/grammar.md @@ -181,7 +181,7 @@ var 临时变量 = 1; ## 注释 -源码中被 JavaScript 引擎忽略的部分就叫做注释,它的作用是对代码进行解释。Javascript 提供两种注释的写法:一种是单行注释,用`//`起头;另一种是多行注释,放在`/*`和`*/`之间。 +源码中被 JavaScript 引擎忽略的部分就叫做注释,它的作用是对代码进行解释。JavaScript 提供两种注释的写法:一种是单行注释,用`//`起头;另一种是多行注释,放在`/*`和`*/`之间。 ```javascript // 这是单行注释 @@ -333,7 +333,7 @@ else console.log('world'); ```javascript if (m !== 1) { if (n === 2) { - console.log('hello'); + console.log('hello'); } else { console.log('world'); } @@ -345,7 +345,7 @@ if (m !== 1) { ```javascript if (m !== 1) { if (n === 2) { - console.log('hello'); + console.log('hello'); } } else { console.log('world'); @@ -728,4 +728,3 @@ top: ## 参考链接 - Axel Rauschmayer, [A quick overview of JavaScript](http://www.2ality.com/2011/10/javascript-overview.html) - diff --git a/docs/basic/history.md b/docs/basic/history.md index 97dd32b..06a4131 100644 --- a/docs/basic/history.md +++ b/docs/basic/history.md @@ -75,13 +75,13 @@ ECMA-262 标准后来也被另一个国际标准化组织 ISO(International Or 2009年12月,ECMAScript 5.0版 正式发布。Harmony 项目则一分为二,一些较为可行的设想定名为 JavaScript.next 继续开发,后来演变成 ECMAScript 6;一些不是很成熟的设想,则被视为 JavaScript.next.next,在更远的将来再考虑推出。TC39 的总体考虑是,ECMAScript 5 与 ECMAScript 3 基本保持兼容,较大的语法修正和新功能加入,将由 JavaScript.next 完成。当时,JavaScript.next 指的是ECMAScript 6。第六版发布以后,将指 ECMAScript 7。TC39 预计,ECMAScript 5 会在2013年的年中成为 JavaScript 开发的主流标准,并在此后五年中一直保持这个位置。 -2011年6月,ECMAscript 5.1版发布,并且成为 ISO 国际标准(ISO/IEC 16262:2011)。到了2012年底,所有主要浏览器都支持 ECMAScript 5.1版的全部功能。 +2011年6月,ECMAScript 5.1版发布,并且成为 ISO 国际标准(ISO/IEC 16262:2011)。到了2012年底,所有主要浏览器都支持 ECMAScript 5.1版的全部功能。 2013年3月,ECMAScript 6 草案冻结,不再添加新功能。新的功能设想将被放到 ECMAScript 7。 2013年12月,ECMAScript 6 草案发布。然后是12个月的讨论期,听取各方反馈。 -2015年6月,ECMAScript 6 正式发布,并且更名为“ECMAScript 2015”。这是因为 TC39 委员会计划,以后每年发布一个 ECMAScript 的版本,下一个版本在2016年发布,称为”ECMAScript 2016”,2017年发布“ECMAScript 2017”,以此类推。 +2015年6月,ECMAScript 6 正式发布,并且更名为“ECMAScript 2015”。这是因为 TC39 委员会计划,以后每年发布一个 ECMAScript 的版本,下一个版本在2016年发布,称为“ECMAScript 2016”,2017年发布“ECMAScript 2017”,以此类推。 ## 周边大事记 @@ -185,4 +185,3 @@ JavaScript 伴随着互联网的发展一起发展。互联网周边技术的快 - John Dalziel, [The race for speed part 4: The future for JavaScript](http://creativejs.com/2013/06/the-race-for-speed-part-4-the-future-for-javascript/) - Axel Rauschmayer, [Basic JavaScript for the impatient programmer](http://www.2ality.com/2013/06/basic-javascript.html) - resin.io, [Happy 18th Birthday JavaScript! A look at an unlikely past and bright future](http://resin.io/happy-18th-birthday-javascript/) - diff --git a/docs/basic/introduction.md b/docs/basic/introduction.md index 0bdb9a1..f6d5173 100644 --- a/docs/basic/introduction.md +++ b/docs/basic/introduction.md @@ -69,11 +69,11 @@ Mozilla 基金会的手机操作系统 Firefox OS,更是直接将 JavaScript **(6)跨平台的桌面应用程序** -Chromium OS、Windows 8 等操作系统直接支持 JavaScript 编写应用程序。Mozilla 的 Open Web Apps 项目、Google 的 [Chrome App 项目](http://developer.chrome.com/apps/about_apps)、Github 的 [Electron 项目](http://electron.atom.io/)、以及 [TideSDK 项目](http://tidesdk.multipart.net/docs/user-dev/generated/),都可以用来编写运行于 Windows、Mac OS 和 Android 等多个桌面平台的程序,不依赖浏览器。 +Chromium OS、Windows 8 等操作系统直接支持 JavaScript 编写应用程序。Mozilla 的 Open Web Apps 项目、Google 的 [Chrome App 项目](http://developer.chrome.com/apps/about_apps)、GitHub 的 [Electron 项目](http://electron.atom.io/)、以及 [TideSDK 项目](http://tidesdk.multipart.net/docs/user-dev/generated/),都可以用来编写运行于 Windows、Mac OS 和 Android 等多个桌面平台的程序,不依赖浏览器。 **(7)小结** -可以预期,JavaScript 最终将能让你只用一种语言,就开发出适应不同平台(包括桌面端、服务器端、手机端)的程序。早在2013年9月的[统计](http://adambard.com/blog/top-github-languages-for-2013-so-far/)之中,JavaScript 就是当年 Github 上使用量排名第一的语言。 +可以预期,JavaScript 最终将能让你只用一种语言,就开发出适应不同平台(包括桌面端、服务器端、手机端)的程序。早在2013年9月的[统计](http://adambard.com/blog/top-github-languages-for-2013-so-far/)之中,JavaScript 就是当年 GitHub 上使用量排名第一的语言。 著名程序员 Jeff Atwood 甚至提出了一条 [“Atwood 定律”](http://www.codinghorror.com/blog/2007/07/the-principle-of-least-power.html): @@ -162,4 +162,3 @@ function greetMe(yourName) { greetMe('World') // Hello World ``` - diff --git a/docs/bom/cookie.md b/docs/bom/cookie.md index 871bebb..789151b 100644 --- a/docs/bom/cookie.md +++ b/docs/bom/cookie.md @@ -259,4 +259,3 @@ document.cookie = 'fontSize=;expires=Thu, 01-Jan-1970 00:00:01 GMT'; ## 参考链接 - [HTTP cookies](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies), by MDN - diff --git a/docs/bom/engine.md b/docs/bom/engine.md index 9b29f62..b42197c 100644 --- a/docs/bom/engine.md +++ b/docs/bom/engine.md @@ -104,7 +104,7 @@ URL 支持`javascript:`协议,即在 URL 的位置写入代码,使用这个 点击 ``` -浏览器的地址栏也可以执行`javascipt:`协议。将`javascript:console.log('Hello')`放入地址栏,按回车键也会执行这段代码。 +浏览器的地址栏也可以执行`javascript:`协议。将`javascript:console.log('Hello')`放入地址栏,按回车键也会执行这段代码。 如果 JavaScript 代码返回一个字符串,浏览器就会新建一个文档,展示这个字符串的内容,原有文档的内容都会消失。 @@ -139,8 +139,8 @@ URL 支持`javascript:`协议,即在 URL 的位置写入代码,使用这个 1. 浏览器一边下载 HTML 网页,一边开始解析。也就是说,不等到下载完,就开始解析。 2. 解析过程中,浏览器发现` +``` + +注意,请求的脚本网址有一个`callback`参数(`?callback=bar`),用来告诉服务器,客户端的回调函数名称(`bar`)。 + +第二步,服务器收到请求后,拼接一个字符串,将 JSON 数据放在函数名里面,作为字符串返回(`bar({...})`)。 + +第三步,客户端会将服务器返回的字符串,作为代码解析,因为浏览器认为,这是` +``` + +上面代码中,`document.currentScript`就是`