Skip to content

Commit 3d5743a

Browse files
committed
Moved traditional Chinese translation from zh-tw to zhtw so that it would show up
1 parent c8a4e3d commit 3d5743a

25 files changed

+1690
-1725
lines changed

doc/language.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"default": "en",
3-
"listed": ["en", "fi", "ru", "zh", "tr", "pl", "ko", "ja", "es", "zh-Tw"]
3+
"listed": ["en", "fi", "ru", "zhtw", "zh", "tr", "pl", "ko", "ja", "es"]
44
}
55

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
1-
## `Array` 的建構函式
2-
3-
`Array` 的建構函式在處理參數上一直有模糊的地帶,所以建議使用 `array`的字面語法來使用 - `[]` - 來新增一個的Array
4-
5-
[1, 2, 3]; // 結果: [1, 2, 3]
6-
new Array(1, 2, 3); // 結果: [1, 2, 3]
7-
8-
[3]; // 結果: [3]
9-
new Array(3); // 結果: []
10-
new Array('3') // 結果: ['3']
11-
12-
在上面的範例 `new Array(3)` 當只有一個參數傳入到 `Array` 的建構函數
13-
且那個參數事宜個數字,建構函數會回傳空值
14-
但是 `Array` 長度的屬性會變成跟那個參數一樣(以此範例來看他回傳的長度為 3)
15-
**注意** 只有他長度的屬性會被設定,整個 Array裡面的數值都不會初始化
16-
17-
var arr = new Array(3);
18-
arr[1]; // undefined
19-
1 in arr; // false, 數值沒有被設定進去
20-
21-
被設定用來當做 `Array` 的長度只有少數情況使用
22-
先設定 `Array` 的長度可以用一下的範例來避免使用 `for loop` 的麻煩
23-
24-
new Array(count + 1).join(stringToRepeat);
25-
26-
### 結語
27-
28-
`Array` 的建構函式需要避免,建議使用字面語法。因為他們比較簡短、也更增加閱讀性
1+
## `Array` 的建構函式
2+
3+
`Array` 的建構函式在處理參數上一直有模糊的地帶,所以建議使用 `array`的字面語法來使用 - `[]` - 來新增一個的Array
4+
5+
[1, 2, 3]; // 結果: [1, 2, 3]
6+
new Array(1, 2, 3); // 結果: [1, 2, 3]
7+
8+
[3]; // 結果: [3]
9+
new Array(3); // 結果: []
10+
new Array('3') // 結果: ['3']
11+
12+
在上面的範例 `new Array(3)` 當只有一個參數傳入到 `Array` 的建構函數
13+
且那個參數事宜個數字,建構函數會回傳空值
14+
但是 `Array` 長度的屬性會變成跟那個參數一樣(以此範例來看他回傳的長度為 3)
15+
**注意** 只有他長度的屬性會被設定,整個 Array裡面的數值都不會初始化
16+
17+
var arr = new Array(3);
18+
arr[1]; // undefined
19+
1 in arr; // false, 數值沒有被設定進去
20+
21+
被設定用來當做 `Array` 的長度只有少數情況使用
22+
先設定 `Array` 的長度可以用一下的範例來避免使用 `for loop` 的麻煩
23+
24+
new Array(count + 1).join(stringToRepeat);
25+
26+
### 結語
27+
28+
`Array` 的建構函式需要避免,建議使用字面語法。因為他們比較簡短、也更增加閱讀性
Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,46 @@
1-
## Array 迴圈和屬性
2-
3-
雖然在 Javascript 中 Array 都是 Objects,但是沒有好的理由要使用他
4-
[`for in`](#object.forinloop) 的迴圈中。事實上有很多原因要避免使用 `for in` 在 Array 之中
5-
6-
> **注意:** Javascript Arrays **不是** *關連性 Arrays*
7-
> 只有 [objects](#object.general) 來管理建值的相對應關係
8-
> Arrays 是**保持** 順序的,Objects **則沒有**
9-
10-
因為 `for in` 迴圈會列舉所有在原型 Array 上的屬性因為他會使用[`hasOwnProperty`](#object.hasownproperty), 這會使得 Array 比原本的 `for` 迴圈慢上二十幾倍
11-
12-
### 迴圈
13-
14-
為了要達到最好的性能所以最好使用 `for` 迴圈來讀取一個 Array 裡面的數值。
15-
16-
var list = [1, 2, 3, 4, 5, ...... 100000000];
17-
for(var i = 0, l = list.length; i < l; i++) {
18-
console.log(list[i]);
19-
}
20-
21-
在上面的例子中利用 `l = list.length` 來處理 Array 的長度問題。
22-
23-
雖然 `length` 屬性是屬於 Array 中其中一個屬性,但是他還使有一定的性能消耗在每次循環的訪問。
24-
近期 Javascript 使用 **may** 來解決在這上面的效率問題,但是在現在的引擎上還不一定有支援。
25-
26-
實際上,不使用暫存 Array 長度的方式比使用暫存的版本還要慢很多。
27-
28-
### `length` 的屬性
29-
30-
`length` 屬性中的 *getter* 直接回傳在 Array 之中的程度,而 *setter* 可以用來 **刪除** Array。
31-
32-
var foo = [1, 2, 3, 4, 5, 6];
33-
foo.length = 3;
34-
foo; // [1, 2, 3]
35-
36-
foo.length = 6;
37-
foo.push(4);
38-
foo; // [1, 2, 3, undefined, undefined, undefined, 4]
39-
40-
在上面的例子可以看到,如果給的長度比較小他就會去刪除 Array 中的數值。如果比較大的話,他就會自己增加一些 `undefined` 的數值進去
41-
42-
### 結語
43-
44-
為了達到更好的效率,建議使用 `for` 迴圈還有暫存 `length` 的屬性。
45-
`for in` 迴圈則是會讓程式中有更多的錯誤和性能問題。
46-
1+
## Array 迴圈和屬性
2+
3+
雖然在 Javascript 中 Array 都是 Objects,但是沒有好的理由要使用他
4+
[`for in`](#object.forinloop) 的迴圈中。事實上有很多原因要避免使用 `for in` 在 Array 之中
5+
6+
> **注意:** Javascript Arrays **不是** *關連性 Arrays*
7+
> 只有 [objects](#object.general) 來管理建值的相對應關係
8+
> Arrays 是**保持** 順序的,Objects **則沒有**
9+
10+
因為 `for in` 迴圈會列舉所有在原型 Array 上的屬性因為他會使用[`hasOwnProperty`](#object.hasownproperty), 這會使得 Array 比原本的 `for` 迴圈慢上二十幾倍
11+
12+
### 迴圈
13+
14+
為了要達到最好的性能所以最好使用 `for` 迴圈來讀取一個 Array 裡面的數值。
15+
16+
var list = [1, 2, 3, 4, 5, ...... 100000000];
17+
for(var i = 0, l = list.length; i < l; i++) {
18+
console.log(list[i]);
19+
}
20+
21+
在上面的例子中利用 `l = list.length` 來處理 Array 的長度問題。
22+
23+
雖然 `length` 屬性是屬於 Array 中其中一個屬性,但是他還使有一定的性能消耗在每次循環的訪問。
24+
近期 Javascript 使用 **may** 來解決在這上面的效率問題,但是在現在的引擎上還不一定有支援。
25+
26+
實際上,不使用暫存 Array 長度的方式比使用暫存的版本還要慢很多。
27+
28+
### `length` 的屬性
29+
30+
`length` 屬性中的 *getter* 直接回傳在 Array 之中的程度,而 *setter* 可以用來 **刪除** Array。
31+
32+
var foo = [1, 2, 3, 4, 5, 6];
33+
foo.length = 3;
34+
foo; // [1, 2, 3]
35+
36+
foo.length = 6;
37+
foo.push(4);
38+
foo; // [1, 2, 3, undefined, undefined, undefined, 4]
39+
40+
在上面的例子可以看到,如果給的長度比較小他就會去刪除 Array 中的數值。如果比較大的話,他就會自己增加一些 `undefined` 的數值進去
41+
42+
### 結語
43+
44+
為了達到更好的效率,建議使用 `for` 迴圈還有暫存 `length` 的屬性。
45+
`for in` 迴圈則是會讓程式中有更多的錯誤和性能問題。
46+
File renamed without changes.
Lines changed: 42 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,42 @@
1-
## 為什麼不要使用 `eval`
2-
3-
因為 `eval` 函數會在 Javascript 的區域性的區間執行那段程式碼。
4-
5-
var foo = 1;
6-
function test() {
7-
var foo = 2;
8-
eval('foo = 3');
9-
return foo;
10-
}
11-
test(); // 3
12-
foo; // 1
13-
14-
但是, `eval` 只接受直接的呼叫而且那個函數只能叫做 `eval`,才能在一個區段中執行。
15-
16-
var foo = 1;
17-
function test() {
18-
var foo = 2;
19-
var bar = eval;
20-
bar('foo = 3');
21-
return foo;
22-
}
23-
test(); // 2
24-
foo; // 3
25-
26-
所有的 `eval` 都應該去比免試用。有 99.9% 的使用情況都可以 **不必** 使用到而達到同等效果。
27-
28-
### 偽裝的 `eval`
29-
30-
[定時函數](#other.timeouts) `setTimeout``setInterval` 都可以接受一個字串當做他們第一個參數。這些字串 **永遠** 都會在全域範圍內執行,因此在這種情況下 `eval` 沒有被直接的使用。
31-
32-
### 安全上的顧慮
33-
34-
`eval` 同樣有安全上的問題,因為所有的程式碼都可以被直接執行。
35-
而他不應去執行一串未知的字串或是來自不幸任的來源。
36-
37-
### 結語
38-
39-
`eval` 應該永遠不要去只用它,任何的程式在被他執行後都有性能和安全上的考慮。如果有情況需要去使用他,他都不應該列為第一順位的解決方法。
40-
41-
應該有更好的方法能夠去使用,但是最好都不要去使用 `eval`
42-
1+
## 為什麼不要使用 `eval`
2+
3+
因為 `eval` 函數會在 Javascript 的區域性的區間執行那段程式碼。
4+
5+
var foo = 1;
6+
function test() {
7+
var foo = 2;
8+
eval('foo = 3');
9+
return foo;
10+
}
11+
test(); // 3
12+
foo; // 1
13+
14+
但是, `eval` 只接受直接的呼叫而且那個函數只能叫做 `eval`,才能在一個區段中執行。
15+
16+
var foo = 1;
17+
function test() {
18+
var foo = 2;
19+
var bar = eval;
20+
bar('foo = 3');
21+
return foo;
22+
}
23+
test(); // 2
24+
foo; // 3
25+
26+
所有的 `eval` 都應該去比免試用。有 99.9% 的使用情況都可以 **不必** 使用到而達到同等效果。
27+
28+
### 偽裝的 `eval`
29+
30+
[定時函數](#other.timeouts) `setTimeout``setInterval` 都可以接受一個字串當做他們第一個參數。這些字串 **永遠** 都會在全域範圍內執行,因此在這種情況下 `eval` 沒有被直接的使用。
31+
32+
### 安全上的顧慮
33+
34+
`eval` 同樣有安全上的問題,因為所有的程式碼都可以被直接執行。
35+
而他不應去執行一串未知的字串或是來自不幸任的來源。
36+
37+
### 結語
38+
39+
`eval` 應該永遠不要去只用它,任何的程式在被他執行後都有性能和安全上的考慮。如果有情況需要去使用他,他都不應該列為第一順位的解決方法。
40+
41+
應該有更好的方法能夠去使用,但是最好都不要去使用 `eval`
42+

0 commit comments

Comments
 (0)