Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

improve translation on japanese and translate "delete operator" #130

Merged
merged 37 commits into from

2 participants

HIRAKI Satoru Ivo Wetzel
HIRAKI Satoru

Hi.

I fixed some representation in Japanese translation and translate "delete" in Japanese.

Plz merge them.

Thanks.

Layzie added some commits
HIRAKI Satoru Layzie fix translate in "Clousures and References" cfcee46
HIRAKI Satoru Layzie fix translate in "Avoiding the Reference Problem" f14a456
HIRAKI Satoru Layzie fix strong range 9f67e37
HIRAKI Satoru Layzie fix translate "Constructors" 3e1802b
HIRAKI Satoru Layzie fix translateion in "prototype" 2499aed
HIRAKI Satoru Layzie fix translation in "for in loop" e077114
HIRAKI Satoru Layzie fix translation in "general" a55f6be
HIRAKI Satoru Layzie fix translate in "clusures" cf2da10
HIRAKI Satoru Layzie fix translation in "aruguments" 07bf7e4
HIRAKI Satoru Layzie fix transition in "scopes" 786c170
HIRAKI Satoru Layzie fix translation in "general" 563d23e
HIRAKI Satoru Layzie fix translation in "equality" 8507575
HIRAKI Satoru Layzie fix translation in "instans of" 6523453
HIRAKI Satoru Layzie fix representation in "undefined" d314228
HIRAKI Satoru Layzie fix translate in "others" 1cc24a4
HIRAKI Satoru Layzie fix translate in "constuctors" d4c46e6
HIRAKI Satoru Layzie fix transition in "constructors" 8d1819e
HIRAKI Satoru Layzie fix transition in "scopes" 887ece3
HIRAKI Satoru Layzie fix transition in "scopes" 92e134a
HIRAKI Satoru Layzie fix translate in "General" 1db1d02
HIRAKI Satoru Layzie fix translate "Equality" 83649e4
HIRAKI Satoru Layzie fix translate in "typeof" e3704b3
HIRAKI Satoru Layzie fix translate in "typeof" e3ec386
HIRAKI Satoru Layzie fix translte in "casting" 5d52cdf
HIRAKI Satoru Layzie fix translate in "undefined" 9c87e5b
HIRAKI Satoru Layzie fix translate in "semicolon" 901b13f
HIRAKI Satoru Layzie fix translate in "timeout" d738831
HIRAKI Satoru Layzie fix translate in "Array" 4ac4dfd
HIRAKI Satoru Layzie cp core/delete 2c719a2
HIRAKI Satoru Layzie fix typo 985299b
HIRAKI Satoru Layzie translate 'The delete Operator' in 'delete' to ja cd7c86a
HIRAKI Satoru Layzie translate "Global code and Function code" in "delete" to ja 623ba2c
HIRAKI Satoru Layzie add delete menu into "core" 414e750
HIRAKI Satoru Layzie translate "Explicit properties" in "delete" to ja 777a432
HIRAKI Satoru Layzie translate "Function arguments and built-ins" in delete 23f1d00
HIRAKI Satoru Layzie translate "Host objects" to ja in "delete" 49ed22c
HIRAKI Satoru Layzie translate "In conclusion" to ja in "delete" 698ff8e
Ivo Wetzel BonsaiDen merged commit 9e82a07 into from
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Commits on Nov 21, 2011
  1. HIRAKI Satoru
  2. HIRAKI Satoru
  3. HIRAKI Satoru

    fix strong range

    Layzie authored
  4. HIRAKI Satoru

    fix translate "Constructors"

    Layzie authored
Commits on Nov 27, 2011
  1. HIRAKI Satoru

    fix translateion in "prototype"

    Layzie authored
  2. HIRAKI Satoru
  3. HIRAKI Satoru

    fix translation in "general"

    Layzie authored
  4. HIRAKI Satoru

    fix translate in "clusures"

    Layzie authored
  5. HIRAKI Satoru

    fix translation in "aruguments"

    Layzie authored
  6. HIRAKI Satoru

    fix transition in "scopes"

    Layzie authored
  7. HIRAKI Satoru

    fix translation in "general"

    Layzie authored
  8. HIRAKI Satoru

    fix translation in "equality"

    Layzie authored
  9. HIRAKI Satoru

    fix translation in "instans of"

    Layzie authored
Commits on Dec 9, 2011
  1. HIRAKI Satoru
  2. HIRAKI Satoru

    fix translate in "others"

    Layzie authored
Commits on Dec 18, 2011
  1. HIRAKI Satoru

    fix translate in "constuctors"

    Layzie authored
  2. HIRAKI Satoru
  3. HIRAKI Satoru

    fix transition in "scopes"

    Layzie authored
  4. HIRAKI Satoru

    fix transition in "scopes"

    Layzie authored
Commits on Dec 24, 2011
  1. HIRAKI Satoru

    fix translate in "General"

    Layzie authored
  2. HIRAKI Satoru

    fix translate "Equality"

    Layzie authored
  3. HIRAKI Satoru

    fix translate in "typeof"

    Layzie authored
  4. HIRAKI Satoru

    fix translate in "typeof"

    Layzie authored
  5. HIRAKI Satoru

    fix translte in "casting"

    Layzie authored
  6. HIRAKI Satoru

    fix translate in "undefined"

    Layzie authored
  7. HIRAKI Satoru

    fix translate in "semicolon"

    Layzie authored
Commits on Jan 2, 2012
  1. HIRAKI Satoru

    fix translate in "timeout"

    Layzie authored
Commits on Jan 8, 2012
  1. HIRAKI Satoru

    fix translate in "Array"

    Layzie authored
  2. HIRAKI Satoru

    cp core/delete

    Layzie authored
Commits on Jan 16, 2012
  1. HIRAKI Satoru

    fix typo

    Layzie authored
Commits on Jan 29, 2012
  1. HIRAKI Satoru
  2. HIRAKI Satoru
Commits on Feb 8, 2012
  1. HIRAKI Satoru

    add delete menu into "core"

    Layzie authored
Commits on Feb 19, 2012
  1. HIRAKI Satoru
Commits on Feb 24, 2012
  1. HIRAKI Satoru
Commits on Feb 25, 2012
  1. HIRAKI Satoru
  2. HIRAKI Satoru
This page is out of date. Refresh to see the latest.
8 doc/ja/array/general.md
View
@@ -1,6 +1,6 @@
## 配列の繰り返しとプロパティ
-JavaScriptの配列もまたオブジェクトですので[`for in ループ`](#object.forinloop)を配列の繰り返しで使用するような理由はありません。実際、配列に`for in`を使用**しない**為の正当な理由はたくさんあります。
+JavaScriptの配列もまたオブジェクトですが、[`for in ループ`](#object.forinloop)を配列の繰り返し処理で使用することの良い理由は1つもありません。実際、配列に`for in`を使用**しない**為の正当な理由はたくさんあります。
> **注意:** JavaScriptの配列は*連想配列*では**ありません**。JavaScriptは[objects](#object.general)だけがキーバリューをマッピングするものです。
> また、連想配列は順序を**保持**しますが、オブジェクトは**保持しません**
@@ -16,11 +16,11 @@ JavaScriptの配列もまたオブジェクトですので[`for in ループ`](#
console.log(list[i]);
}
-上記の例では一つ余分に変数がありますが、それは配列の長さを取るための`l = list.length`の部分です
+上記の例では1つ追加の仕掛けがありますが、それは`l = list.length`によって配列の長さをキャッシュする部分です
-また、`length`プロパティは配列自身に定義されていますが、ループのそれぞれの繰り返しで探索する為のオーバーヘッドがまだあります。最近のJavaScriptエンジンはこのような場合に最適化する**はず**です。新しいエンジンか古いエンジンで実行されるかどうかをコードが知る方法はありません
+`length`プロパティは配列自身に定義されてはいますが、ループ中の繰り返しで毎回これを参照してしまうと、やはりオーバーヘッドが存在してしまいます。最近のJavaScriptエンジンはこのような場合に最適化する**はず**ですが、コードが新しいエンジンで実行されるかどうか、知る方法はありません
-実際には、キャッシュを抜きにするとループの結果はキャッシュされたものに比べて、**半分だけ高速**になっています
+実際には、キャッシュを抜きにするとループの結果はキャッシュされたものに比べてたった**半分の速度**にしかなりません
### `length`プロパティ
75 doc/ja/core/delete.md
View
@@ -0,0 +1,75 @@
+## `delete`演算子
+
+端的に言って、JavaScriptの関数やその他の要素は`DontDelete`属性が設定されているので、グローバル変数を消去する事は*不可能*です。
+
+### グローバルコードと関数コード
+
+変数や、関数がグローバルまたは[関数スコープ](#function.scopes)で定義された時は、そのプロパティは有効なオブジェクトかグローバルオブジェクトになります。このようなプロパティは属性のセットを持っていますが、それらの内の1つが`DontDelete`になります。変数や関数がグローバルや関数コードで宣言されると、常に`DontDelete`属性を作るために、消去できません。
+
+ // グローバル変数:
+ var a = 1; // DontDelete属性が設定される
+ delete a; // false
+ a; // 1
+
+ // 通常関数:
+ function f() {} // DontDelete属性が設定される
+ delete f; // false
+ typeof f; // "function"
+
+ // 再代入も役に立たない:
+ f = 1;
+ delete f; // false
+ f; // 1
+
+### 明示的なプロパティ
+
+普通にプロパティを消去できる方法が存在します:プロパティを明示的に設定するのです。
+
+ // プロパティを明示的に設定する
+ var obj = {x: 1};
+ obj.y = 2;
+ delete obj.x; // true
+ delete obj.y; // true
+ obj.x; // undefined
+ obj.y; // undefined
+
+上記の例の中で、`obj.x``obj.y`はそれぞれ`DontDelete`属性が無い為に削除できます。これが下記の例でも動作する理由です。
+
+ // IE以外では、これも動作する
+ var GLOBAL_OBJECT = this;
+ GLOBAL_OBJECT.a = 1;
+ a === GLOBAL_OBJECT.a; // true - ただのグローバルのvar
+ delete GLOBAL_OBJECT.a; // true
+ GLOBAL_OBJECT.a; // undefined
+
+ここでは`a`. [`this`](#function.this)を消す為にグローバルオブジェクトと明示的に宣言した`a`をそのプロパティとして参照させて、消去する事を許可するトリックを使います。
+
+IE(最低でも6-8で)は多少のバグがある為に、上記のコードは動作しません。
+
+
+### 関数の引数と組み込み引数
+
+関数の通常の引数である、[`arguments` object](#function.arguments)と組み込みのプロパティもまた、`DontDelete`が設定されています。
+
+ // 関数の引数とプロパティ:
+ (function (x) {
+
+ delete arguments; // false
+ typeof arguments; // "object"
+
+ delete x; // false
+ x; // 1
+
+ function f(){}
+ delete f.length; // false
+ typeof f.length; // "number"
+
+ })(1);
+
+### ホストオブジェクト
+
+`delete`演算子の挙動はホストオブジェクトにとって予測不可能になりかねません。仕様によりホストオブジェクトは、あらゆる挙動の実行が許可されている為です。
+
+### 終わりに
+
+`delete`演算子は、しばしば予期せぬ挙動をします。唯一安全な仕様方法は通常のオブジェクトに明示的に設定されたプロパティを扱う場合だけです。
9 doc/ja/core/semicolon.md
View
@@ -77,9 +77,10 @@ JavaScriptはセミコロン無しの言語ではありません。実際に、
})(window); //<- 挿入
-> **注意点:** JavaScriptパーサーは新しい行のreturn文を「正しく」返してはいないですが、
-> これは必要という訳では無いので自動セミコロン挿入の障害になります。
-> このお陰で不必要な副作用を無くす事にもなります。
+> **注意点:** JavaScriptパーサーは、すぐ後に改行が続く return文を正しく扱いません。
+> これは必ずしも自動セミコロン挿入の欠点によるものではありませんが、
+> それもまた望まない副作用となりえます。
+
パーサーは上記のコードの振舞いを劇的に変化させます。あるケースにおいては、**間違っている事**にもなってしまいます。
@@ -98,4 +99,4 @@ JavaScriptはセミコロン無しの言語ではありません。実際に、
### 終わりに
-セミコロンを省略するのは**絶対**にお勧めしません。この事はまた括弧をその終端と一緒の行に書く事が推奨されてますし、1つの`if``else`文を絶対に省略してはなりません。これら両方の処理がコードの整合性を高めてくれる上、JavaScriptパーサーの振舞いを変えてしまうのを防いでくれるでしょう。
+セミコロンを省略するのは**絶対**にお勧めしません。括弧を対応する文と同じ行に記述すること、および一行の`if / else`文に対して括弧を省略しないことが推奨されています。これら両方の処理がコードの整合性を高めてくれるだけでなく、JavaScriptパーサーの振舞いを変えてしまうのを防いでくれるでしょう。
6 doc/ja/core/undefined.md
View
@@ -1,6 +1,6 @@
## `undefined``null`
-JavaScriptは`nothing`を表す2つの別個の値を持っています。`undefined`はこれら2つの内より便利な存在です
+JavaScriptは`nothing`を表す2つの別個の値を持っています。これら2つの内で`undefined`はより便利な存在です
### `undefined`の値
@@ -11,14 +11,14 @@ JavaScriptは`nothing`を表す2つの別個の値を持っています。`undef
> **ES5での注意点:** ECMAScript 5での`undefined`**もはや** strict modeでは *書き変えられない*
> ようになっています。しかし、この名前は`undefined`という名前の関数の例に痕跡が見られるだけです。
-`undefined`が帰される時の例をいくつか挙げます
+`undefined`が返される時の例をいくつか挙げます
- (未定義の)グローバル変数`undefined`にアクセスした時
- `return`文が無い為に、暗黙のうちに関数が返された時
- 何も返されない`return`がある時
- 存在しないプロパティを探索する時
- 関数のパラメーターで明示的な値が何も無い時
- - 全ての`undefined`が設定された値
+ - `undefined`が設定された全ての値
### `undefined`の値に変更する処理
2  doc/ja/function/arguments.md
View
@@ -3,7 +3,7 @@
JavaScriptの全ての関数スコープは`arguments`と呼ばれる特別な変数にアクセスできます。この変数は関数が受け取った全ての引数を保持する変数です。
> **注意:** `arguments`が既に`var`や正式なパラメーターにより
-> 関数のスコープが定義されている場合は
+> 関数のスコープ内部で定義されている場合は
> `arguments`オブジェクトは作られません。
`arguments`オブジェクトは`Array`では**ありません**。これは配列と同じような -`length`プロパティと名付けられています- 文法を持っていますが、`Array.prototype`を継承している訳では無いので、実際`Object`になります。
8 doc/ja/function/closures.md
View
@@ -1,6 +1,6 @@
## クロージャと参照
-JavaScriptの一番パワフルな特徴の一つとして*クロージャ*が使える事が挙げられます。これはスコープが**いつも**外部に定義されたスコープにアクセスできるという事です。JavaScriptの唯一のスコープは[関数スコープ](#function.scopes)ですが、全ての関数は標準でクロージャとして振る舞います。
+JavaScriptの一番パワフルな特徴の一つとして*クロージャ*が使える事が挙げられます。これはスコープが自身の定義されている外側のスコープに**いつでも**アクセスできるという事です。JavaScriptの唯一のスコープは[関数スコープ](#function.scopes)ですが、全ての関数は標準でクロージャとして振る舞います。
### プライベート変数をエミュレートする
@@ -32,7 +32,7 @@ JavaScriptでは、スコープ自体を参照・代入する事が出来無い
count = 1337;
};
-上記のコードは`Counter`のスコープ中にある変数`count`の値を変更する事は**ありません**`foo.hack`**その**スコープで定義されていないからです。これは*グローバル*変数`count`の作成 -またはオーバーライド- の代わりになるでしょう
+上記のコードは`Counter`のスコープ中にある変数`count`の値を変更する事は**ありません**`foo.hack`**その**スコープで定義されていないからです。これは(`Counter`内の変数`count`の変更)の代わりに*グローバル*変数`count`の作成 -または上書き- する事になります
### ループ中のクロージャ
@@ -64,9 +64,9 @@ JavaScriptでは、スコープ自体を参照・代入する事が出来無い
外部の匿名関数は`i`を即座に第一引数として呼び出し、引数`e``i`**値**のコピーとして受け取ります。
-`e`を参照している`setTimeout`を受け取った匿名関数はループによって値が変わる事が**ありません**
+`e`を参照している`setTimeout`を受け取った匿名関数はループによって値が変わる事が**ありません。**
-他にこのような事を実現する方法があります。それは匿名ラッパーから関数を返してあげる事です。これは上記のコードと同じような効果があります
+他にこのような事を実現する方法があります。それは匿名ラッパーから関数を返してあげる事です。これは上記のコードと同じ振る舞いをします
for(var i = 0; i < 10; i++) {
setTimeout((function(e) {
16 doc/ja/function/constructors.md
View
@@ -2,7 +2,7 @@
JavaScriptのコンストラクタは色々ある他のプログラム言語とは一味違います。`new`キーワードが付いているどんな関数呼び出しも、コンストラクタとして機能します。
-コンストラクタ内部では -呼び出された関数の事です- `this`の値は新規に生成された`Object`を参照しています。この**新規**のオブジェクトの[`prototype`](#object.prototype)は、コンストラクタとして起動した関数オブジェクトの`prototype`として設定されています
+コンストラクタ内部では -呼び出された関数の事です- `this`の値は新規に生成された`Object`を参照しています。この**新規**のオブジェクトの[`prototype`](#object.prototype)は、コンストラクタとして起動した関数オブジェクトの`prototype`に設定されています
もし呼び出された関数が、`return`ステートメントを明示していない場合は、暗黙の了解で`this`の値を -新規のオブジェクトとして- 返します。
@@ -16,9 +16,9 @@ JavaScriptのコンストラクタは色々ある他のプログラム言語と
var test = new Foo();
-上記で`Foo`はコンストラクタとして呼び出され、`Foo.prototype`として新規に生成された`prototype`を設定されています
+上記は、`Foo`をコンストラクタとして呼び出し、新規に生成されたオブジェクトの`prototype``Foo.prototype`に設定しています
-明示的に`return`ステートメントがある場合、`Object`の値を返す**だけでなく**関数はこのステートメントを返します
+明示的に`return`ステートメントがある場合、関数は返り値が`Object`である場合に**限り**ステートメントで明示した値を返します
function Bar() {
return 2;
@@ -41,7 +41,7 @@ JavaScriptのコンストラクタは色々ある他のプログラム言語と
}
Foo(); // undefinedが返る
-上記の例では、いくつかのケースでは動作するように見える場合があります。JavaScriptの[`this`](#function.this)の働きのせいで、*グローバルオブジェクト*`this`の値として使用されるからです。
+JavaScriptの[`this`](#function.this)の働きのせいで、上記の例ではいくつかのケースでは動作するように見える場合がありますが、それは*グローバルオブジェクト*`this`の値として使用されるからです。
### ファクトリー
@@ -64,16 +64,16 @@ JavaScriptのコンストラクタは色々ある他のプログラム言語と
`Bar`で呼び出されたものは両方とも全く同じものものになります。これには、`method`と呼ばれるプロパティを持ったオブジェクトが新しく生成されますが、これは[クロージャ](#function.closures)です。
-また、注意する点として呼び出された`new Bar()`は返ってきたオブジェクトのプロトタイプに影響**しません**プロトタイプが新しく生成されたオブジェクトにセットされるまで`Bar`は絶対に新しいオブジェクトを返さないのです
+また、注意する点として呼び出された`new Bar()`は返ってきたオブジェクトのプロトタイプに影響**しません**プロトタイプは新しく生成されたオブジェクトにセットされはしますが`Bar`は絶対にその新しいオブジェクトを返さないのです
上記の例では、`new`キーワードの使用の有無は機能的に違いがありません。
### ファクトリーとして新しくオブジェクトを作成する
-大半の場合に推奨されるのは`new`の付け忘れによるバグを引き起こしやすいので使用**しない**事です
+多くの場合に推奨される事として`new`の付け忘れによるバグを引き起こしやすいので、`new`を使用**しない**ようにするという事があります
-新しいオブジェクトを作成するためにファクトリーを使用するか、そのファクトリー内部に新しいオブジェクトを構築する必要があります
+新しいオブジェクトを作成するためにファクトリーを使用して、そのファクトリー内部に新しいオブジェクトを作成すべきだという事です
function Foo() {
var obj = {};
@@ -98,6 +98,6 @@ JavaScriptのコンストラクタは色々ある他のプログラム言語と
### 終わりに
-`new`キーワードが省略される事により、バグの可能性がもたらされますがプロトタイプを使わない確実な理由には**なりません**。最終的には、アプリケーションの必要性により、どちらの解決法がより良いかが決まってきます。特に大切なのは、オブジェクトの作成に特定のスタイルを選ぶ事、また**そのスタイルに固執する事**です。
+`new`キーワードが省略される事によりバグの可能性がもたらされますが、それによりプロトタイプを全く使わないという確かな理由には**なりません**。最終的には、アプリケーションの必要性により、どちらの解決法がより良いかが決まってきます。特に大切なのは、オブジェクトの作成に特定のスタイルを選ぶ事、また**そのスタイルに固執する事**です。
9 doc/ja/function/general.md
View
@@ -1,6 +1,6 @@
## 関数の宣言と式
-関数はJavaScriptの第一級オブジェクトです。この事は、その他の値と同じように渡す事が出来るという事です。この機能で良く使われる一つとして**匿名関数**を他のオジェクトにコールバックとして渡すというものがあり、これで非同期での実装が可能になります。
+関数はJavaScriptの第一級オブジェクトです。この事は、その他の値と同じように渡す事が出来るという事です。この機能で良く使われる一つとして**匿名関数**を他のオブジェクトにコールバックとして渡すというものがあり、これで非同期での実装が可能になります。
### `関数`宣言
@@ -25,14 +25,13 @@
しかし、コードの実行時にのみこの割り当てがされるため、`foo`という変数は対応するコードが実行される前にデフォルト値である[undefined](#core.undefined)が代入されるのです。
-### 名前付き関数宣言
+### 名前付き関数式
-他に特殊なケースとして、命名関数があります
+他に特殊なケースとして、名前付き関数があります
var foo = function bar() {
bar(); // 動作する
}
bar(); // ReferenceError
-この場合の`bar``foo`に対して関数を割り当てるだけなので、外部スコープでは使用できません。しかし、`bar`は内部では使用できます。これはJavaScriptでは[名前解決](#function.scopes)による動作です。関数名は*いつも*関数自体のローカルスコープ内で有効になっています。
-
+この場合の`bar``foo`に対して関数を割り当てるだけなので、外部スコープでは使用できません。しかし、`bar`は内部では使用できます。これはJavaScriptの[名前解決](#function.scopes)の方法によるもので、関数名は*いつも*関数自身のローカルスコープ内で有効になっています。
24 doc/ja/function/scopes.md
View
@@ -10,7 +10,7 @@ JavaScriptはブロックに2つのペアの中括弧を使うのが素晴しい
}
> **注意:** 代入が使用されてない時、return文や関数の引数、`{...}`表記はブロック文として
-> 解釈されて、オブジェクトリテラルトは**なりません**。これは[セミコロン自動挿入](#core.semicolon)
+> 解釈されて、オブジェクトリテラルとは**なりません**。これは[セミコロン自動挿入](#core.semicolon)
> と連動して奇妙なエラーを引き起こすことになります。
JavaScriptはまた明確な名前空間を持ちません。この事は全て一つの*グローバルで共有された*名前空間で定義されるという事です。
@@ -27,7 +27,7 @@ JavaScriptはまた明確な名前空間を持ちません。この事は全て
上記の2つのスクリプトは同じ効果を持って**いません**。スクリプト Aは`foo`と呼ばれる変数を、*グローバル*スコープに定義しており、スクリプト Bは`foo`*現在*のスコープで定義ています。
-再び、`var`が重大な影響を持っていない、*同じ効果*では**無い**スクリプトになります。
+繰り返しますが、この2つのスクリプトは*同じ影響*を全く持って**いない**スクリプトになります`var`を使用しない事は重大な意味を持ちます
// グローバルスコープ
var foo = 42;
@@ -38,10 +38,10 @@ JavaScriptはまた明確な名前空間を持ちません。この事は全て
test();
foo; // 21
-`test`関数の中の`var`ステートメントを省略すると`foo`の値をオーバーライドします。最初の内は大した事ではないように思いますが、JavaScriptが何千行規模になると、`var`を使っていない事で恐怖とバグの追跡の困難さを招くことになります
+`test`関数の中の`var`ステートメントを省略すると`foo`の値をオーバーライドします。最初の内は大した事ではないように思いますが、JavaScriptが何千行規模になると、`var`を使っていない事でバグの追跡が酷く困難になります
// グローバルスコープ
- var items = [/* 同じリスト */];
+ var items = [/* 何かのリスト */];
for(var i = 0; i < 10; i++) {
subLoop();
}
@@ -53,11 +53,11 @@ JavaScriptはまた明確な名前空間を持ちません。この事は全て
}
}
-外側のループは`subloop`が最初に呼ばれた後に終了します。なぜなら、`subloop`がグローバル変数`i`の値で上書きされているからです。2番目の`for`ループに`var`を使用する事によって簡単にこのエラーを回避する事ができます。`var`ステートメントは*希望する影響*を外側のスコープに与える場合を除いては、**絶対**に残してはいけません
+外側のループは`subloop`が最初に呼ばれた後に終了します。なぜなら、`subloop`がグローバル変数`i`の値で上書きされているからです。2番目の`for`ループに`var`を使用する事によって簡単にこのエラーを回避する事ができます。*目的とする効果*を外側のスコープに与えようとしない限り、**絶対**に`var`ステートメントは省略してはいけません
### ローカル変数
-JavaScriptのローカル変数の為の唯一のソースは[function](#function.general)パラメーターと`var`ステートメントを宣言された変数になります
+JavaScriptのローカル変数の為の唯一の作成方法は[function](#function.general)パラメーターと`var`ステートメントによって宣言された変数になります
// グローバルスコープ
var foo = 1;
@@ -73,11 +73,11 @@ JavaScriptのローカル変数の為の唯一のソースは[function](#functio
}
test(10);
-`foo`と`i`は、関数`test`のスコープ内のローカル変数ですが、`bar`の割り当ては同じ名前のグローバル変数で上書きされてしまいます
+`foo`と`i`は、関数`test`のスコープ内のローカル変数ですが、`bar`の代入は同じ名前でグローバル変数で上書きしてしまいます
### 巻き上げ
-JavaScriptの**巻き上げ**宣言。この言葉の意味は`var`ステートメントと`function`宣言が、それらの外側のスコープに移動するというものです
+JavaScriptは宣言を**巻き上げ**ます。これは`var`ステートメントと`function`宣言が、それらを含むスコープの一番先頭に移動するという事を意味します
bar();
var bar = function() {};
@@ -96,7 +96,7 @@ JavaScriptの**巻き上げ**宣言。この言葉の意味は`var`ステート
}
}
-上記のコードは何も実行されないうちに変換されてしまいます。JavaScriptは`var`ステートメントと同じように、直近で囲んでいる`function`宣言を先頭に移動させます。
+上記のコードは、実行を開始する前に変換されてしまいます。JavaScriptは`var`ステートメントと同じように、直近で囲んでいる`function`宣言を先頭に移動させます。
// varステートメントはここに移動する
var bar, someValue; // 'undefined'がデフォルト
@@ -121,7 +121,7 @@ JavaScriptの**巻き上げ**宣言。この言葉の意味は`var`ステート
test();
-ブロックスコープの欠落はループ外の`var`ステートメントの移動だけでなく、その本体も移動させます。これはまた`if`が直感的じゃない結果になってしまいます
+ブロックスコープの欠落は`var`ステートメントをループやボディの外に移動するだけでなく、`if`の構成を直感的ではないものにしてしまいます
元のコードの中の`if`ステートメントは*グローバル変数*である`goo`も変更しているように見えますが、実際には -巻き上げが適用された後に- *ローカル変数*を変更しています。
@@ -132,7 +132,7 @@ JavaScriptの**巻き上げ**宣言。この言葉の意味は`var`ステート
var SomeImportantThing = {};
}
-しかし、勿論上記の動きは`val`ステートメントが*グローバルスコープ*の上に移動しているという事実に基づいています。
+しかし、勿論上記の動きは`var`ステートメントが*グローバルスコープ*の上に移動しているという事実に基づいています。
var SomeImportantThing;
@@ -147,7 +147,7 @@ JavaScriptの**巻き上げ**宣言。この言葉の意味は`var`ステート
JavaScriptの*グローバルスコープ*を含む、全てのスコープは、*現在のオブジェクト*を参照している特殊な名前[`this`](#function.this)を持っています。
-関数スコープはまた、関数を通過してきた引数を含んでいる[`arguments`](#function.arguments)という名前も持っています。
+関数スコープはまた、[`arguments`](#function.arguments)という名前も持っています。それは関数スコープの中で定義され、関数に渡された引数を含んでいます
例として、関数の中で`foo`と命名された変数にアクセスしようとする場合を考えましょう。JavaScriptは以下の順番で、その名前を探索しようとします。
3  doc/ja/index.json
View
@@ -54,7 +54,8 @@
"articles": [
"eval",
"undefined",
- "semicolon"
+ "semicolon",
+ "delete"
]
},
{
2  doc/ja/object/forinloop.md
View
@@ -2,7 +2,7 @@
`in`オペレーターは単に、`for in`ループの中でオブジェクトのプロパティをプロトタイプチェーンの中で繰り返し遡る為にあるものです。
-> **注意:** `for in`ループは`列挙`される属性が`false`にセットされているプロパティを反復処理**しません**。;
+> **注意:** `for in`ループは`enumerable`属性が`false`にセットされているプロパティを反復処理**しません**。;
> 例えば、配列の`length`プロパティなどがそれに当たります。
// Object.prototype汚染
6 doc/ja/object/prototype.md
View
@@ -39,7 +39,7 @@ JavaScriptはプロトタイプベースが採用されている唯一の広範
Object.prototype
{ toString: ... /* その他 */ }
-上記では`test`は`Bar.prototype`と`Foo.prototype`の2つのオブジェクトより継承されます。その為`Foo`の中で設定された`method`関数にアクセスできるようになります。また、`Foo`のプロトタイプとしてのインスタンス**それ自体**の`value`プロパティにもアクセスが可能です。`new Bar()`は`Foo`のインスタンスを新しく作ら**ない**という事は非常に注目されるべき点ですが、それ自身のプロトタイプを再利用しています。従って全ての`Bar`インスタンスは**同じ**`value`プロパティを共有します。
+上記では`test`は`Bar.prototype`と`Foo.prototype`の2つのオブジェクトより継承されます。その為`Foo`の中で設定された`method`関数にアクセスできるようになります。また、`Foo`のプロトタイプとしてのインスタンス**それ自体**の`value`プロパティにもアクセスが可能です。`new Bar()`は`Foo`のインスタンスを新しく作**りません**が、プロトタイプに割り合てられた`Foo`インスタンスを再利用している事は注目に値します。従って全ての`Bar`インスタンスは**同じ**`value`プロパティを共有します。
> **注意:** `Bar.prototype = Foo`のような使い方は**しない**で下さい。`Foo`はそのプロトタイプではなく、
> 関数オブジェクト`Foo`自体を指しているからです。
@@ -54,12 +54,12 @@ JavaScriptはプロトタイプベースが採用されている唯一の広範
### プロトタイププロパティ
-プロトタイププロパティはJavaScriptの中でプロトタイプチェーンを構築する為に使われていますが、**任意**の値を代入する事も可能になっています。この時プロトタイプに代入されている値は単に無視されるだけです
+プロトタイププロパティはJavaScriptの中でプロトタイプチェーンを構築する為に使われていますが、**任意**の値を代入する事も可能になっています。しかし、プロトタイプとしてプリミティブが代入された場合は単に無視されるだけです
function Foo() {}
Foo.prototype = 1; // 効果無し
-割り当てられているオブジェクトは上記の例で示されている通りに動作し、動的にプロトタイプチェーンを作ります
+オブジェクトの代入は上記の例のように動作し、動的にプロトタイプチェーンを作る事ができます
### パフォーマンス
14 doc/ja/other/timeouts.md
View
@@ -8,9 +8,9 @@ JavaScriptは非同期なので、`setTimeout`と`setInterval`関数を使って
function foo() {}
var id = setTimeout(foo, 1000); // Number > 0を返す
-`setTimeout`が呼ばれた時に、タイムアウトのIDと`foo`この先の**おおよそ**1000msに実行するスケジュールを返します。`foo`は正確に**1度**だけ実行されます。
+`setTimeout`が呼ばれた時に、タイムアウトのIDを返し、この先**おおよそ**1000ms以内に実行する`foo`をスケジュールします。`foo`は正確に**1度**だけ実行されます。
-コードが実行されているJavaScriptエンジンのタイマー分解能によって決まります。この事実はJavaScriptがシングルスレッドのなので、他のスレッドでの実行を妨害してしまう事があるかもしれません。これは、`setTimeout`の呼び出しにより指定された正確なディレイで実行するという確実な賭けという**意味ではありません**
+これは、`setTimeout`関数の呼び出しで指定した遅延時間を正確に間違いなく得られるという**事では決してありません**。コードが実行されているJavaScriptエンジンのタイマー分解能によって決まります。この事実はJavaScriptがシングルスレッドなので、他のスレッドでの実行を妨害してしまう事があるかもしれません
第一パラメーターを渡された関数は*グローバルオブジェクト*によって呼び出されます。これは呼び出された関数の内部で[`this`](#functionis)がまさにこのオブジェクトを参照しているという事になります。
@@ -44,7 +44,7 @@ JavaScriptは非同期なので、`setTimeout`と`setInterval`関数を使って
上記のコードでは、`foo`が1回呼び出されて、1秒ブロックされます。
-`foo`がコードをブロックしている間、`setInterval`は呼び出される予定を確保しています。`foo`が完了した瞬間に、実行を待っている間に**10回**以上呼び出されている事になります
+`foo`がコードをブロックしている間、`setInterval`は呼び出される予定を確保しています。`foo`が完了した瞬間に、実行を待っている呼び出しが**10回**以上存在しているでしょう
### ブロッキング可能なコードの取り扱い
@@ -74,7 +74,7 @@ JavaScriptは非同期なので、`setTimeout`と`setInterval`関数を使って
clearTimeout(i);
}
-ここまでもまだ、任意の数字を与えられた為に影響を受けないタイムアウトがあるかもしれません。しかし、全てのタイムアウトのIDを追跡していく事は推奨されないので、それらは個別にクリアされます
+ここまでもまだ、任意の数字を与えられた為に影響を受けないタイムアウトがあるかもしれません。そのため、代わりに全てのタイムアウトのIDを追跡する事が推奨されます。それで個別にクリアされます
### 隠された`eval`の使用
@@ -99,10 +99,10 @@ JavaScriptは非同期なので、`setTimeout`と`setInterval`関数を使って
この場合、`eval`は[直接](#core.eval)呼ばれないので、文字列が渡された`setTimeout`*global scope*で実行されます。よって、`bar`のスコープから`foo`のローカル変数は使われないのです。
-さらに、文字列を関数に渡さ**ない**ように推奨される理由として、それぞれのタイムアウト関数から呼び出されるという事があります
+いずれかのタイムアウト関数によって呼び出される関数に引数を渡すために文字列を使わ**ない**という事は、さらに推奨されています
function foo(a, b, c) {}
-
+
// 絶対にこのように使わない
setTimeout('foo(1,2, 3)', 1000)
@@ -119,7 +119,7 @@ JavaScriptは非同期なので、`setTimeout`と`setInterval`関数を使って
`setTimeout``setInterval`のパラメーターに文字列を使用する事は**絶対**するべきではありません。引数が関数に呼び出される必要がある場合**本当**に悪いコードの明確なサインになります。実際の呼び出しには*匿名関数*を渡すべきです。
-その上で`setInterval`の使用はそのスケジューラーがJavaScriptの実行をブロックするので避けるべきでしょう
+さらに`setInterval`の使用はスケジューラーがJavaScriptの実行によってブロックされないので、避けるべきでしょう
[1]: http://en.wikipedia.org/wiki/Document_Object_Model "Document Object Model"
2  doc/ja/types/casting.md
View
@@ -19,7 +19,7 @@ JavaScriptは*弱い型付け*の言語なので、可能な**限り**に*型強
> **ES5での注意点:** `0`から始まるNumberリテラルは8進数(基数が8)として解釈されます。
> このような8進数のサポートはECMAScript5のstrict modeでは**削除されました**
-上記の自体を避ける為に、[strict equal operator](#types.equality)を使用する事を**強く**推奨します。また、これはたくさんある落し穴を避けますが、それでもまだJavaScriptの弱い型付けシステムから発生する色々な課題が残っています。
+上記の自体を避ける為に、[厳格等価演算子](#types.equality)を使用する事を**強く**推奨します。また、これはたくさんある落し穴を避けますが、それでもまだJavaScriptの弱い型付けシステムから発生する色々な課題が残っています。
### 組み込み型のコンストラクタ
4 doc/ja/types/equality.md
View
@@ -1,6 +1,6 @@
## 等価と比較
-JavaScriptはオブジェクトの値の等価の比較方法が2種類持っています
+JavaScriptはオブジェクトの値の等価の比較方法を2種類持っています
### 等価演算子
@@ -50,7 +50,7 @@ JavaScriptは*弱い型付け*を特徴としています。これは等価演
var foo = {};
foo === foo; // true
-これら2つの演算子は**同一性**と等価**ではない**事を比較しています。これは、これらの演算子はPythonの`is`演算子やCのポインター比較と同じように、同じオブジェクトの**インスタンス**を比較するという事になります。
+これら2つの演算子は**同一性**を比較していているのであって、等価を比較しているわけでは**ありません**。これは、これらの演算子はPythonの`is`演算子やCのポインター比較と同じように、同じオブジェクトの**インスタンス**を比較するという事になります。
### 終わりに
2  doc/ja/types/instanceof.md
View
@@ -24,7 +24,7 @@
'foo' instanceof String; // false
'foo' instanceof Object; // false
-ここで一つ重要な事は、この`instanceof`は異なるJavaScriptのコンテキストが起源のオブジェクト(例:ブラウザの異なるウィンドウ)では、そのコンストラクタが正確に同じオブジェクトになる訳では無いので、同じオブジェクトとして動作しないという事です
+ここで1つ重要な事は、異なるJavaScriptのコンテキスト(例えば、ブラウザの異なるウィンドウ)を元としたオブジェクトでは、コンストラクタが厳密に同じものでは無い為に`instanceof`は上手く動作しません
### 終わりに
4 doc/ja/types/typeof.md
View
@@ -29,7 +29,7 @@
{} Object object
new Object() Object object
-上記のテーブルの*Type*は値を参照しており、`typeof`演算子が返ってきます。はっきりと分かるように、この値はどれでも一貫しています。
+上記のテーブルにおいて*Type*`typeof`演算子が返す値を参照しています。はっきりと分かるように、この値はどれでも一貫しています。
*Class*はオブジェクト内部の`[[Class]]`プロパティの値を参照しています。
@@ -55,7 +55,7 @@
> **ES5での注意点:** 便宜上、ECMAScript 5では
> `Object.prototype.toString`
-> `null``undefined``Object`から
+> `null``undefined`の返す値は`Object`から
> `Null``Undefined`**変更され**ました。
### 未定義変数のテスト
Something went wrong with that request. Please try again.