Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(zh): maintain redirected links (part 2) #22802

Merged
merged 9 commits into from
Aug 1, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -550,7 +550,7 @@ console.log("John's cat".length);
// In this case, 10.
```

In ES2015, template literals are also available. Template literals are enclosed by the back-tick (\` \`) ([grave accent](http://en.wikipedia.org/wiki/Grave_accent)) character instead of double or single quotes. Template strings provide syntactic sugar for constructing strings. This is similar to string interpolation features in Perl, Python and more. Optionally, a tag can be added to allow the string construction to be customized, avoiding injection attacks or constructing higher level data structures from string contents.
In ES2015, template literals are also available. Template literals are enclosed by the back-tick (\` \`) ([grave accent](https://en.wikipedia.org/wiki/Grave_accent)) character instead of double or single quotes. Template strings provide syntactic sugar for constructing strings. This is similar to string interpolation features in Perl, Python and more. Optionally, a tag can be added to allow the string construction to be customized, avoiding injection attacks or constructing higher level data structures from string contents.
yin1999 marked this conversation as resolved.
Show resolved Hide resolved

```js
// Basic literal string creation
Expand Down
4 changes: 2 additions & 2 deletions files/zh-tw/web/javascript/guide/introduction/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ Java 是一個為了快速執行與安全型態而設計的基於類別的程式

## JavaScript 與 ECMAScript 規格

Netscape 公司發明了 JavaScript ,而 JavaScript 的第一次應用正是在 Netscape 瀏覽器。然而,Netscape 後來和 [Ecma International](http://www.ecma-international.org/)(一個致力於將資訊及通訊系統標準化的歐洲組織,前身為 ECMA - 歐洲計算機製造商協會)合作,開發一個基於 JavaScript 核心並同時兼具標準化與國際化的程式語言,這個經過標準化的 JavaScript 便稱作 ECMAScript ,和 JavaScript 有著相同的應用方式並支援相關標準。各個公司都可以使用這個開放的標準語言去開發 JavaScript 的專案。ECMAScript 標準記載於 ECMA-262 這個規格中。
Netscape 公司發明了 JavaScript ,而 JavaScript 的第一次應用正是在 Netscape 瀏覽器。然而,Netscape 後來和 [Ecma International](https://ecma-international.org/)(一個致力於將資訊及通訊系統標準化的歐洲組織,前身為 ECMA - 歐洲計算機製造商協會)合作,開發一個基於 JavaScript 核心並同時兼具標準化與國際化的程式語言,這個經過標準化的 JavaScript 便稱作 ECMAScript ,和 JavaScript 有著相同的應用方式並支援相關標準。各個公司都可以使用這個開放的標準語言去開發 JavaScript 的專案。ECMAScript 標準記載於 ECMA-262 這個規格中。

ECMA-262 標準同時也經過 [ISO](http://www.iso.ch/)(國際標準化組織)認証,成為 ISO-16262 標準。你可以在 Mozilla 的網站上找到 [PDF 版本的 ECMA-262](http://www-archive.mozilla.org/js/language/E262-3.pdf),但這板本已過期;你也可以在 [Ecma International 的網站](http://www.ecma-international.org/publications/standards/Ecma-262.htm) 找到這個規格。 ECMAScript 規格中並沒有描述已經被 W3C(全球資訊網協會)標準化的文件物件模型(DOM)。文件物件模型定義了 HTML 文件物件(document objects)和腳本之間運作的方式。
ECMA-262 標準同時也經過 [ISO](https://www.iso.org/home.html)(國際標準化組織)認証,成為 ISO-16262 標準。你可以在 Mozilla 的網站上找到 [PDF 版本的 ECMA-262](https://www-archive.mozilla.org/js/language/E262-3.pdf),但這板本已過期;你也可以在 [Ecma International 的網站](https://ecma-international.org/publications-and-standards/standards/ecma-262/) 找到這個規格。 ECMAScript 規格中並沒有描述已經被 W3C(全球資訊網協會)標準化的文件物件模型(DOM)。文件物件模型定義了 HTML 文件物件(document objects)和腳本之間運作的方式。

### JavaScript 版本與 ECMAScript 版本之間的關係

Expand Down
74 changes: 37 additions & 37 deletions files/zh-tw/web/javascript/guide/regular_expressions/index.md

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions files/zh-tw/web/javascript/guide/typed_arrays/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ var amountDueView = new Float32Array(buffer, 20, 1);
舉例來說,可以用 `amountDueView[0]` 存取 amountDue。

> [!NOTE]
> C 結構的 [data structure alignment](http://en.wikipedia.org/wiki/Data_structure_alignment) 是與使用平台有關,須小心這些填充上的差異。
> C 結構的[資料結構對齊](https://zh.wikipedia.org/wiki/数据结构对齐)是與使用平台有關,須小心這些填充上的差異。

### Conversion to normal arrays

Expand All @@ -158,5 +158,5 @@ normalArray.constructor === Array;
- [Getting `ArrayBuffer`s or typed arrays from _Base64_-encoded strings](/zh-TW/docs/Web/JavaScript/Base64_encoding_and_decoding#Appendix.3A_Decode_a_Base64_string_to_Uint8Array_or_ArrayBuffer)
- [`StringView` – a C-like representation of strings based on typed arrays](/zh-TW/docs/Code_snippets/StringView)
- [Faster Canvas Pixel Manipulation with Typed Arrays](https://hacks.mozilla.org/2011/12/faster-canvas-pixel-manipulation-with-typed-arrays)
- [Typed Arrays: Binary Data in the Browser](http://www.html5rocks.com/en/tutorials/webgl/typed_arrays)
- [型別陣列——瀏覽器中的二進位資料](https://web.dev/articles/webgl-typed-arrays)
- {{Glossary("Endianness")}}
6 changes: 3 additions & 3 deletions files/zh-tw/web/javascript/guide/using_promises/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ async function foo() {
}
```

這基於 Promise,例如 `doSomething()` 和之前一樣。你可以閱讀在[這裡](https://developers.google.com/web/fundamentals/getting-started/primers/async-functions)閱讀更多。
這基於 Promise,例如 `doSomething()` 和之前一樣。你可以閱讀在[這裡](/zh-TW/docs/Web/JavaScript/Reference/Statements/async_function)閱讀更多。

Promise 藉由捕捉所有錯誤,包含例外和程式錯誤,解決了 Callback 地獄的缺點。這是非同步運算的基本特性。

Expand Down Expand Up @@ -283,8 +283,8 @@ console.log(1); // 1, 2, 3, 4
## 看更多

- {{jsxref("Promise.then()")}}
- [Promises/A+ 特色](http://promisesaplus.com/)
- [Promises/A+ 特色](https://promisesaplus.com/)
- [Venkatraman.R - JS Promise (Part 1, Basics)](https://medium.com/@ramsunvtech/promises-of-promise-part-1-53f769245a53)
- [Venkatraman.R - JS Promise (Part 2 - Using Q.js, When.js and RSVP.js)](https://medium.com/@ramsunvtech/js-promise-part-2-q-js-when-js-and-rsvp-js-af596232525c#.dzlqh6ski)
- [Venkatraman.R - Tools for Promises Unit Testing](https://tech.io/playgrounds/11107/tools-for-promises-unittesting/introduction)
- [Nolan Lawson: We have a problem with promises — Common mistakes with promises](http://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html)
- [Nolan Lawson: We have a problem with promises — Common mistakes with promises](https://pouchdb.com/2015/05/18/we-have-a-problem-with-promises.html)
Original file line number Diff line number Diff line change
Expand Up @@ -33,32 +33,32 @@ JavaScript 的核心語言是由 ECMA TC-39 委員會統一標準,並且命名

### WebID

[WebIDL 規格書](http://dev.w3.org/2006/webapi/WebIDL/) 是 DOM 技術與 ECMAScript 之間相互黏合的基礎。
[WebIDL 規格書](https://webidl.spec.whatwg.org/) 是 DOM 技術與 ECMAScript 之間相互黏合的基礎。

### DOM 核心

W3C 統一規範了文件物件模型的核心部分。它定義了無關語言而將 HTML 與 XML 文件抽象化為物件的介面,以及對抽象化物件進行處理的機制。在 DOM 的定義中包含:

- [DOM core](http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html) 中的文件結構、樹狀模型,DOM 事件結構:Node, Element, DocumentFragment, Document, DOMImplementation, Event, EventTarget, …
- [DOM events](http://dev.w3.org/2006/webapi/DOM-Level-3-Events/html/DOM3-Events.html) 中對 DOM 事件結構(DOM Event Architecture)和特定事件的廣義定義。
- 其他如 [DOM Traversal](http://www.w3.org/TR/DOM-Level-2-Traversal-Range/traversal.html) 和 [DOM Range](http://html5.org/specs/dom-range.html)。
- [DOM core](https://dom.spec.whatwg.org/) 中的文件結構、樹狀模型,DOM 事件結構:Node, Element, DocumentFragment, Document, DOMImplementation, Event, EventTarget, …
- [DOM events](https://w3c.github.io/uievents/) 中對 DOM 事件結構(DOM Event Architecture)和特定事件的廣義定義。
- 其他如 [DOM Traversal](https://www.w3.org/TR/DOM-Level-2-Traversal-Range/traversal.html) 和 [DOM Range](https://html5.org/specs/dom-range.html)。

以 ECMAScript 的觀點來看,DOM 規範所定義的物件被稱為宿主物件(Host objects) 。

### HTML DOM

網頁標記語言 [HTML](http://www.whatwg.org/html) 是依據 DOM 來規格化。在 DOM 核心中,定義了虛擬概念的分層,而 HTML 也定義了元素的意義。 HTML DOM 包含了 HTML 元素的 `className` 屬性與諸如 {{ domxref("document.body") }} 的 API。
網頁標記語言 [HTML](https://html.spec.whatwg.org/multipage/) 是依據 DOM 來規格化。在 DOM 核心中,定義了虛擬概念的分層,而 HTML 也定義了元素的意義。 HTML DOM 包含了 HTML 元素的 `className` 屬性與諸如 {{ domxref("document.body") }} 的 API。

HTML 的規格書也定義了在文件上的一些限制;例如,他要求所有 `ul` 元素(代表無順序編號的清單)的子元素必須是 `li 元素(代表清單`中的項目)。而未在標準中定義的元素和屬性通常在規格中被禁用。

## 其他重要的 API

- setTimeout 和 setInterval 函數首次納入 HTML 標準中的 [Window](http://www.whatwg.org/html/#window) 介面
- [XMLHttpRequest](http://dev.w3.org/2006/webapi/XMLHttpRequest-2/):允許傳送非同步 HTTP 請求的 API。
- [CSS Object Model](http://dev.w3.org/csswg/cssom/):CSSOM 用來將 CSS 的規則轉換為物件。
- [WebWorkers](http://www.whatwg.org/specs/web-workers/current-work/):允許平行計算的 API。
- [WebSockets](http://www.whatwg.org/C/#network):允許低階雙向溝通的 API。
- [Canvas 2D Context](http://www.whatwg.org/html/#2dcontext):canvas 元素的繪圖 API。
- setTimeout 和 setInterval 函數首次納入 HTML 標準中的 [Window](https://html.spec.whatwg.org/multipage/nav-history-apis.html#window) 介面
- [XMLHttpRequest](https://xhr.spec.whatwg.org/):允許傳送非同步 HTTP 請求的 API。
- [CSS Object Model](https://drafts.csswg.org/cssom/):CSSOM 用來將 CSS 的規則轉換為物件。
- [WebWorkers](https://html.spec.whatwg.org/multipage/workers.html):允許平行計算的 API。
- [WebSockets](https://html.spec.whatwg.org/multipage/comms.html#network):允許低階雙向溝通的 API。
- [Canvas 2D Context](https://html.spec.whatwg.org/multipage/canvas.html#2dcontext):canvas 元素的繪圖 API。

## Shell

Expand All @@ -78,10 +78,10 @@ A JavaScript shell allows you to quickly test snippets of JavaScript code withou

- [Firebug](https://addons.mozilla.org/en-US/firefox/addon/firebug/) - Firefox 的開發者工具,同樣包函主控台
- [Babel REPL](https://babeljs.io/repl) - 以瀏覽器為基準的 [REPL](https://en.wikipedia.org/wiki/REPL),主要用來實驗未來的 JavaScript
- [TypeScript playground](https://www.typescriptlang.org/play) — A browser-based playground for experimenting both new JavaScript features (via the tsc compiler) and TypeScript syntax.
- [TypeScript playground](https://www.typescriptlang.org/play/) — A browser-based playground for experimenting both new JavaScript features (via the tsc compiler) and TypeScript syntax.

## 瀏覽器支援

每個網頁開發者都曾經體會過[一團混亂的 DOM 支援狀況](http://ejohn.org/blog/the-dom-is-a-mess/)。某些功能上不同瀏覽器的支援可能差異很大,因為過去重要的 DOM 功能都沒有明確的規範,進而使不同網頁瀏覽器對相同的使用情境實踐了互不相容的功能(像是 Internet Explorer 的事件模型)。最近(截至 2011 年 6 月),由 W3C 與(特別是)WHATWG 對舊功能重新進行詳盡的定義以提升互通性成為了趨勢 。為了跟進這個趨勢,許多網頁瀏覽器也根據這些新規格改進它們的實作。
每個網頁開發者都曾經體會過[一團混亂的 DOM 支援狀況](https://johnresig.com/blog/the-dom-is-a-mess/)。某些功能上不同瀏覽器的支援可能差異很大,因為過去重要的 DOM 功能都沒有明確的規範,進而使不同網頁瀏覽器對相同的使用情境實踐了互不相容的功能(像是 Internet Explorer 的事件模型)。最近(截至 2011 年 6 月),由 W3C 與(特別是)WHATWG 對舊功能重新進行詳盡的定義以提升互通性成為了趨勢 。為了跟進這個趨勢,許多網頁瀏覽器也根據這些新規格改進它們的實作。

雖然並未完全可靠,使用 JavaScript 函式庫是解決跨瀏覽器相容問題的最普遍方式。 這些函式庫將 DOM 的功能抽象化,確保其 API 在不同的瀏覽器中能以相似的方式運作。廣為被使用的框架包括 [jQuery](http://jquery.com/)、[prototype](http://www.prototypejs.org/) 和 [YUI](http://developer.yahoo.com/yui/)。
雖然並未完全可靠,使用 JavaScript 函式庫是解決跨瀏覽器相容問題的最普遍方式。 這些函式庫將 DOM 的功能抽象化,確保其 API 在不同的瀏覽器中能以相似的方式運作。廣為被使用的框架包括 [jQuery](https://jquery.com/)、[prototype](http://prototypejs.org/) 和 [YUI](https://clarle.github.io/yui3/)。
4 changes: 2 additions & 2 deletions files/zh-tw/web/javascript/language_overview/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ slug: Web/JavaScript/Language_overview

## 介紹

為何需要重新介紹?因為 [JavaScript](/zh_tw/JavaScript) 堪稱是[全世界最被人誤解的程式語言](http://javascript.crockford.com/javascript.html)。儘管 JavaScript 再怎麼的被嘲諷為小兒科,在它誤導人的簡潔下隱藏著強大的語言功能。2005 年是個許多知名 JavaScript 應用程式推出的年度,在在證明:更加瞭解這項科技對任何網頁開發者來說皆是重要的技能。
為何需要重新介紹?因為 [JavaScript](/zh_tw/JavaScript) 堪稱是[全世界最被人誤解的程式語言](https://crockford.com/javascript/javascript.html)。儘管 JavaScript 再怎麼的被嘲諷為小兒科,在它誤導人的簡潔下隱藏著強大的語言功能。2005 年是個許多知名 JavaScript 應用程式推出的年度,在在證明:更加瞭解這項科技對任何網頁開發者來說皆是重要的技能。

先從該語言的歷史說起。1995 年,Brendan Eich,一位 Netscape (網景)的工程師,創造了 JavaScript。1996 年初,JavaScript 隨著 Netscape 2 首次推出。它原本要被命名為 LiveScript,結果因為行銷策略為了強調昇陽的 Java 程式語言的普遍性,而不幸的被改名 — 即便兩者之間沒有太大的關係。從此之後,這便成為了混淆的元兇。

Microsoft 在幾個月後隨著 IE 3 推出了跟該語言大致上相容的 JScript。Netscape 在 1997 年將該語言送交 [ECMA International](http://www.ecma-international.org/),一個歐洲標準化組織,而在 1997 年的時候產生了初版的 [ECMAScript](/zh_tw/ECMAScript)。該標準在 1999 年的時候以 [ECMAScript 第三版](http://www.ecma-international.org/publications/standards/Ecma-262.htm)的形式推出了更新,從此之後大致上都相當穩定,不過近期有在研發第四版。
Microsoft 在幾個月後隨著 IE 3 推出了跟該語言大致上相容的 JScript。Netscape 在 1997 年將該語言送交 [ECMA International](https://ecma-international.org/),一個歐洲標準化組織,而在 1997 年的時候產生了初版的 [ECMAScript](/zh_tw/ECMAScript)。該標準在 1999 年的時候以 [ECMAScript 第三版](https://ecma-international.org/publications-and-standards/standards/ecma-262/)的形式推出了更新,從此之後大致上都相當穩定,不過近期有在研發第四版。

這個穩定性對開發者來說是相當好的事情,因為它讓不少實作 (implementation) 有時間慢慢趕上。我會把重點放在第三版的語法。為了避免混淆,我會繼續使用 JavaScript 這個名稱。

Expand Down
6 changes: 3 additions & 3 deletions files/zh-tw/web/javascript/memory_management/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -195,14 +195,14 @@ The max amount of available heap memory can be increased with a flag:

`node --max-old-space-size=6000 index.js`

We can also expose the garbage collector for debugging memory issues using a flag and the [Chrome Debugger](https://nodejs.org/en/docs/guides/debugging-getting-started/):
We can also expose the garbage collector for debugging memory issues using a flag and the [Chrome Debugger](https://nodejs.org/en/learn/getting-started/debugging):

```sh
node --expose-gc --inspect index.js
```

## 參見

- [IBM article on "Memory leak patterns in JavaScript" (2007)](http://www.ibm.com/developerworks/web/library/wa-memleak/)
- [Kangax article on how to register event handler and avoid memory leaks (2010)](http://msdn.microsoft.com/en-us/magazine/ff728624.aspx)
- [IBM article on "Memory leak patterns in JavaScript" (2007)](https://developer.ibm.com/technologies/web-development/)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

链接失效

- [Kangax article on how to register event handler and avoid memory leaks (2010)](<https://learn.microsoft.com/en-us/previous-versions/msdn10/ff728624(v=msdn.10)>)
- [Performance](/zh-TW/docs/Mozilla/Performance)
Original file line number Diff line number Diff line change
Expand Up @@ -131,5 +131,5 @@ console.log(sortArguments(5, 3, 7, 1)); // 顯示 1, 3, 5, 7
- [Array](/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/Array)
- [Functions](/zh-TW/docs/Web/JavaScript/Reference/Functions)
- [Original proposal at ecmascript.org](http://wiki.ecmascript.org/doku.php?id=harmony:rest_parameters)
- [JavaScript arguments object and beyond](http://javascriptweblog.wordpress.com/2011/01/18/javascripts-arguments-object-and-beyond/)
- [JavaScript arguments object and beyond](https://javascriptweblog.wordpress.com/2011/01/18/javascripts-arguments-object-and-beyond/)
- [Destructuring assignment](/zh-TW/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ new Array(arrayLength)

Array(「陣列」)是類似列表(list)的物件(Object),它們的原型(Prototype)擁有方法(methods)來執行遍歷和變異操作。JavaScript 陣列的長度(元素數量),以及其元素的類型都不是固定的。取決於工程師如何選擇使用陣列,可以隨時更改陣列的長度,也可不連續儲存資料, 所以並不保證這些資料是集中的。一般情況下,這些特性很方便使用;但若這些功能都不符合你的用途,你可能會想使用型別陣列(typed arrays)。

有些人認為即便會發生警告,仍然[不應該使用關聯陣列](http://www.andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/),而應該使用 {{jsxref("Global_Objects/Object", "objects")}}。你可參考[輕量級 JavaScript 字典](http://www.less-broken.com/blog/2010/12/lightweight-javascript-dictionaries.html)當中的範例。
有些人認為即便會發生警告,仍然[不應該使用關聯陣列](https://andrewdupont.net/2006/05/18/javascript-associative-arrays-considered-harmful/),而應該使用 {{jsxref("Global_Objects/Object", "objects")}}。你可參考[輕量級 JavaScript 字典](http://www.less-broken.com/blog/2010/12/lightweight-javascript-dictionaries.html)當中的範例。

### 存取陣列元素

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ var values = Array.prototype.map.call(elems, function (obj) {

### 棘手的範例

[(透過連結的部落格啟發)](http://www.wirfs-brock.com/allen/posts/166)
[(透過連結的部落格啟發)](https://wirfs-brock.com/allen/posts/166)

透過一個(被遍歷元素的)參數叫出回調是個常見的用法。有些函式也常常在含有其他可選參數的情況下,使用上一個參數。這種行為常常會給人帶來困惑。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -117,4 +117,4 @@ var bObjProto = new Boolean({});

- {{jsxref("Boolean.prototype")}}
- {{Glossary("Boolean")}}
- [Boolean data type (Wikipedia)](http://en.wikipedia.org/wiki/Boolean_data_type)
- [布林資料類型(維基百科)](<https://zh.wikipedia.org/wiki/布林_(資料類型)>)
Loading