Skip to content

Commit

Permalink
Moved traditional Chinese translation from zh-tw to zhtw so that it w…
Browse files Browse the repository at this point in the history
…ould show up
  • Loading branch information
ZhangYiJiang committed Mar 15, 2013
1 parent c8a4e3d commit 3d5743a
Show file tree
Hide file tree
Showing 25 changed files with 1,690 additions and 1,725 deletions.
2 changes: 1 addition & 1 deletion doc/language.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"default": "en",
"listed": ["en", "fi", "ru", "zh", "tr", "pl", "ko", "ja", "es", "zh-Tw"]
"listed": ["en", "fi", "ru", "zhtw", "zh", "tr", "pl", "ko", "ja", "es"]
}

56 changes: 28 additions & 28 deletions doc/zh-TW/array/constructor.md → doc/zhtw/array/constructor.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,28 @@
## `Array` 的建構函式

`Array` 的建構函式在處理參數上一直有模糊的地帶,所以建議使用 `array`的字面語法來使用 - `[]` - 來新增一個的Array

[1, 2, 3]; // 結果: [1, 2, 3]
new Array(1, 2, 3); // 結果: [1, 2, 3]

[3]; // 結果: [3]
new Array(3); // 結果: []
new Array('3') // 結果: ['3']

在上面的範例 `new Array(3)` 當只有一個參數傳入到 `Array` 的建構函數
且那個參數事宜個數字,建構函數會回傳空值
但是 `Array` 長度的屬性會變成跟那個參數一樣(以此範例來看他回傳的長度為 3)
**注意** 只有他長度的屬性會被設定,整個 Array裡面的數值都不會初始化

var arr = new Array(3);
arr[1]; // undefined
1 in arr; // false, 數值沒有被設定進去

被設定用來當做 `Array` 的長度只有少數情況使用
先設定 `Array` 的長度可以用一下的範例來避免使用 `for loop` 的麻煩

new Array(count + 1).join(stringToRepeat);

### 結語

`Array` 的建構函式需要避免,建議使用字面語法。因為他們比較簡短、也更增加閱讀性
## `Array` 的建構函式

`Array` 的建構函式在處理參數上一直有模糊的地帶,所以建議使用 `array`的字面語法來使用 - `[]` - 來新增一個的Array

[1, 2, 3]; // 結果: [1, 2, 3]
new Array(1, 2, 3); // 結果: [1, 2, 3]

[3]; // 結果: [3]
new Array(3); // 結果: []
new Array('3') // 結果: ['3']

在上面的範例 `new Array(3)` 當只有一個參數傳入到 `Array` 的建構函數
且那個參數事宜個數字,建構函數會回傳空值
但是 `Array` 長度的屬性會變成跟那個參數一樣(以此範例來看他回傳的長度為 3)
**注意** 只有他長度的屬性會被設定,整個 Array裡面的數值都不會初始化

var arr = new Array(3);
arr[1]; // undefined
1 in arr; // false, 數值沒有被設定進去

被設定用來當做 `Array` 的長度只有少數情況使用
先設定 `Array` 的長度可以用一下的範例來避免使用 `for loop` 的麻煩

new Array(count + 1).join(stringToRepeat);

### 結語

`Array` 的建構函式需要避免,建議使用字面語法。因為他們比較簡短、也更增加閱讀性
92 changes: 46 additions & 46 deletions doc/zh-TW/array/general.md → doc/zhtw/array/general.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,46 @@
## Array 迴圈和屬性

雖然在 Javascript 中 Array 都是 Objects,但是沒有好的理由要使用他
[`for in`](#object.forinloop) 的迴圈中。事實上有很多原因要避免使用 `for in` 在 Array 之中

> **注意:** Javascript Arrays **不是** *關連性 Arrays*
> 只有 [objects](#object.general) 來管理建值的相對應關係
> Arrays 是**保持** 順序的,Objects **則沒有**
因為 `for in` 迴圈會列舉所有在原型 Array 上的屬性因為他會使用[`hasOwnProperty`](#object.hasownproperty), 這會使得 Array 比原本的 `for` 迴圈慢上二十幾倍

### 迴圈

為了要達到最好的性能所以最好使用 `for` 迴圈來讀取一個 Array 裡面的數值。

var list = [1, 2, 3, 4, 5, ...... 100000000];
for(var i = 0, l = list.length; i < l; i++) {
console.log(list[i]);
}

在上面的例子中利用 `l = list.length` 來處理 Array 的長度問題。

雖然 `length` 屬性是屬於 Array 中其中一個屬性,但是他還使有一定的性能消耗在每次循環的訪問。
近期 Javascript 使用 **may** 來解決在這上面的效率問題,但是在現在的引擎上還不一定有支援。

實際上,不使用暫存 Array 長度的方式比使用暫存的版本還要慢很多。

### `length` 的屬性

`length` 屬性中的 *getter* 直接回傳在 Array 之中的程度,而 *setter* 可以用來 **刪除** Array。

var foo = [1, 2, 3, 4, 5, 6];
foo.length = 3;
foo; // [1, 2, 3]

foo.length = 6;
foo.push(4);
foo; // [1, 2, 3, undefined, undefined, undefined, 4]

在上面的例子可以看到,如果給的長度比較小他就會去刪除 Array 中的數值。如果比較大的話,他就會自己增加一些 `undefined` 的數值進去

### 結語

為了達到更好的效率,建議使用 `for` 迴圈還有暫存 `length` 的屬性。
`for in` 迴圈則是會讓程式中有更多的錯誤和性能問題。

## Array 迴圈和屬性

雖然在 Javascript 中 Array 都是 Objects,但是沒有好的理由要使用他
[`for in`](#object.forinloop) 的迴圈中。事實上有很多原因要避免使用 `for in` 在 Array 之中

> **注意:** Javascript Arrays **不是** *關連性 Arrays*
> 只有 [objects](#object.general) 來管理建值的相對應關係
> Arrays 是**保持** 順序的,Objects **則沒有**
因為 `for in` 迴圈會列舉所有在原型 Array 上的屬性因為他會使用[`hasOwnProperty`](#object.hasownproperty), 這會使得 Array 比原本的 `for` 迴圈慢上二十幾倍

### 迴圈

為了要達到最好的性能所以最好使用 `for` 迴圈來讀取一個 Array 裡面的數值。

var list = [1, 2, 3, 4, 5, ...... 100000000];
for(var i = 0, l = list.length; i < l; i++) {
console.log(list[i]);
}

在上面的例子中利用 `l = list.length` 來處理 Array 的長度問題。

雖然 `length` 屬性是屬於 Array 中其中一個屬性,但是他還使有一定的性能消耗在每次循環的訪問。
近期 Javascript 使用 **may** 來解決在這上面的效率問題,但是在現在的引擎上還不一定有支援。

實際上,不使用暫存 Array 長度的方式比使用暫存的版本還要慢很多。

### `length` 的屬性

`length` 屬性中的 *getter* 直接回傳在 Array 之中的程度,而 *setter* 可以用來 **刪除** Array。

var foo = [1, 2, 3, 4, 5, 6];
foo.length = 3;
foo; // [1, 2, 3]

foo.length = 6;
foo.push(4);
foo; // [1, 2, 3, undefined, undefined, undefined, 4]

在上面的例子可以看到,如果給的長度比較小他就會去刪除 Array 中的數值。如果比較大的話,他就會自己增加一些 `undefined` 的數值進去

### 結語

為了達到更好的效率,建議使用 `for` 迴圈還有暫存 `length` 的屬性。
`for in` 迴圈則是會讓程式中有更多的錯誤和性能問題。

File renamed without changes.
84 changes: 42 additions & 42 deletions doc/zh-TW/core/eval.md → doc/zhtw/core/eval.md
Original file line number Diff line number Diff line change
@@ -1,42 +1,42 @@
## 為什麼不要使用 `eval`

因為 `eval` 函數會在 Javascript 的區域性的區間執行那段程式碼。

var foo = 1;
function test() {
var foo = 2;
eval('foo = 3');
return foo;
}
test(); // 3
foo; // 1

但是, `eval` 只接受直接的呼叫而且那個函數只能叫做 `eval`,才能在一個區段中執行。

var foo = 1;
function test() {
var foo = 2;
var bar = eval;
bar('foo = 3');
return foo;
}
test(); // 2
foo; // 3

所有的 `eval` 都應該去比免試用。有 99.9% 的使用情況都可以 **不必** 使用到而達到同等效果。

### 偽裝的 `eval`

[定時函數](#other.timeouts) `setTimeout``setInterval` 都可以接受一個字串當做他們第一個參數。這些字串 **永遠** 都會在全域範圍內執行,因此在這種情況下 `eval` 沒有被直接的使用。

### 安全上的顧慮

`eval` 同樣有安全上的問題,因為所有的程式碼都可以被直接執行。
而他不應去執行一串未知的字串或是來自不幸任的來源。

### 結語

`eval` 應該永遠不要去只用它,任何的程式在被他執行後都有性能和安全上的考慮。如果有情況需要去使用他,他都不應該列為第一順位的解決方法。

應該有更好的方法能夠去使用,但是最好都不要去使用 `eval`

## 為什麼不要使用 `eval`

因為 `eval` 函數會在 Javascript 的區域性的區間執行那段程式碼。

var foo = 1;
function test() {
var foo = 2;
eval('foo = 3');
return foo;
}
test(); // 3
foo; // 1

但是, `eval` 只接受直接的呼叫而且那個函數只能叫做 `eval`,才能在一個區段中執行。

var foo = 1;
function test() {
var foo = 2;
var bar = eval;
bar('foo = 3');
return foo;
}
test(); // 2
foo; // 3

所有的 `eval` 都應該去比免試用。有 99.9% 的使用情況都可以 **不必** 使用到而達到同等效果。

### 偽裝的 `eval`

[定時函數](#other.timeouts) `setTimeout``setInterval` 都可以接受一個字串當做他們第一個參數。這些字串 **永遠** 都會在全域範圍內執行,因此在這種情況下 `eval` 沒有被直接的使用。

### 安全上的顧慮

`eval` 同樣有安全上的問題,因為所有的程式碼都可以被直接執行。
而他不應去執行一串未知的字串或是來自不幸任的來源。

### 結語

`eval` 應該永遠不要去只用它,任何的程式在被他執行後都有性能和安全上的考慮。如果有情況需要去使用他,他都不應該列為第一順位的解決方法。

應該有更好的方法能夠去使用,但是最好都不要去使用 `eval`

Loading

0 comments on commit 3d5743a

Please sign in to comment.