Skip to content

Instantly share code, notes, and snippets.

@azu
Last active January 4, 2019 14:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save azu/b8c78fbd179e52a13dc932d03249edf6 to your computer and use it in GitHub Desktop.
Save azu/b8c78fbd179e52a13dc932d03249edf6 to your computer and use it in GitHub Desktop.
diff --git a/source/basic/array/README.md b/source/basic/array/README.md
index 98d8eb2..b828377 100644
--- a/source/basic/array/README.md
+++ b/source/basic/array/README.md
@@ -447,7 +447,7 @@ console.log(newArray); // => ["A", "B", "C", "新しい要素"]
### `Array#splice` {#splice}
配列の先頭や末尾の要素を削除する場合は`Array#shift`や`Array#pop`で行えます。
-しかし、配列の任意のインデックスにある要素を削除することはできません。
+しかし、配列の任意のインデックスにある要素を削除できません。
配列の任意のインデックスの要素削除するには`Array#splice`を利用できます。
`Array#splice`メソッドを利用すると、削除した要素を自動で詰めることができます。
diff --git a/source/basic/async/README.md b/source/basic/async/README.md
index fa6bd33..a4c23b3 100644
--- a/source/basic/async/README.md
+++ b/source/basic/async/README.md
@@ -189,7 +189,7 @@ console.log("この文は実行されます");
非同期処理では、`try...catch`構文を使っても非同期的に発生した例外をキャッチできません。
次のコードでは、10ミリ秒後に非同期的なエラーを発生させています。
-しかし、`try...catch`構文では次のような非同期エラーをキャッチすることはできません。
+しかし、`try...catch`構文では次のような非同期エラーをキャッチできません。
{{book.console}}
<!-- doctest:disable -->
diff --git a/source/basic/class/README.md b/source/basic/class/README.md
index 6ec8fdb..dc5bce0 100644
--- a/source/basic/class/README.md
+++ b/source/basic/class/README.md
@@ -629,7 +629,7 @@ const arrayWrapper = ArrayWrapper.of(1, 2, 3);
console.log(arrayWrapper.length); // => 3
```
-このように静的メソッドでの`this`はクラス自身を参照するため、インスタンスメソッドのようにインスタンスを参照することはできません。
+このように静的メソッドでの`this`はクラス自身を参照するため、インスタンスメソッドのようにインスタンスを参照できません。
そのため静的メソッドは、クラスのインスタンスを作成する処理やクラスに関係する処理を書くために利用されます。
## 2種類のインスタンスメソッドの定義 {#two-instance-method-definition}
@@ -971,7 +971,7 @@ class Child extends Parent {
子クラスのコンストラクタでは、`this`を触る前に`super()`で親クラスのコンストラクタ処理を呼び出さないと`SyntaxError`となるためです。
次のコードでは、`Parent`と`Child`でそれぞれインスタンス(`this`)の`name`プロパティに値を書き込んでいます。
-子クラスでは先に`super()`を呼び出してからでないと`this`を参照することはできません。
+子クラスでは先に`super()`を呼び出してからでないと`this`を参照できません。
そのため、コンストラクタの処理順は`Parent`から`Child`という順番に限定されます。
<!-- textlint-enable no-js-function-paren -->
diff --git a/source/basic/comments/README.md b/source/basic/comments/README.md
index a9b0e67..da1e71a 100644
--- a/source/basic/comments/README.md
+++ b/source/basic/comments/README.md
@@ -30,7 +30,7 @@ JavaScriptには大きく分けて2種類のコメントがあります。
*/
```
-複数行コメントをネストすることはできないため、次のようなケースは`SyntaxError`となります。
+複数行コメントをネストできないため、次のようなケースは`SyntaxError`となります。
```
/* ネストされた /* 複数行コメント */ SyntaxError */
diff --git a/source/basic/data-type/README.md b/source/basic/data-type/README.md
index f011d64..ee29993 100644
--- a/source/basic/data-type/README.md
+++ b/source/basic/data-type/README.md
@@ -15,7 +15,7 @@ JavaScriptは動的型付け言語に分類される言語であるため、
データ型を大きく分けると、**プリミティブ型**と**オブジェクト**の2つに分類されます。
プリミティブ型(基本型)は名前のとおり、文字列や数値などの基本的な値の型のことです。
-プリミティブ型の値は、一度作成したらその値自体を変更することはできないというイミュータブル(immutable)の特性を持ちます。
+プリミティブ型の値は、一度作成したらその値自体を変更できないというイミュータブル(immutable)の特性を持ちます。
一方、プリミティブ型ではないものをオブジェクト(複合型)とよび、
オブジェクトは複数のプリミティブ型の値またはオブジェクトからなる集合です。
@@ -45,7 +45,7 @@ JavaScriptは動的型付け言語に分類される言語であるため、
他のプリミティブ型の値については、`typeof`演算子でそれぞれのデータ型を調べることができます。
オブジェクトと一言にいってもJavaScriptではすべてがオブジェクトであると言われるほど、多くの種類が存在します。
-`typeof`演算子ではすべてのオブジェクトの種類を判定することはできません。
+`typeof`演算子ではすべてのオブジェクトの種類を判定できません。
つまり、`typeof`演算子は、プリミティブ型またはオブジェクトかを判別するもので、
オブジェクトの詳細なデータ型については別の方法を判定するようになっています。
@@ -177,7 +177,7 @@ PHPやRubyなどとは違い、どちらのリテラルでも評価結果は同
"8 o'clock"; // => "8 o'clock"
```
-ダブルクオートとシングルクオートどちらも改行をそのまま入力することはできません。
+ダブルクオートとシングルクオートどちらも改行をそのまま入力できません。
次のように改行を含んだ文字列は定義できずに構文エラー(`SyntaxError`)となります。
[import, multiple-line-string-invalid.js](src/multiple-line-string-invalid.js)
@@ -348,7 +348,7 @@ const numberRegExp = /\d+/; // 1文字以上の数字にマッチする正規表
console.log(numberRegExp.test(123)); // => true
```
-`RegExp`コンストラクタを使うことで文字列から正規表現オブジェクトを作成することもできますが、
+`RegExp`コンストラクタを使うことで文字列から正規表現オブジェクトを作成できますが、
特殊文字の二重エスケープが必要になり直感的に書くことが難しくなります。
正規表現オブジェクトについて詳しくは、[文字列の章][]で紹介します。
diff --git a/source/basic/ecmascript/README.md b/source/basic/ecmascript/README.md
index 6c46190..6f71c20 100644
--- a/source/basic/ecmascript/README.md
+++ b/source/basic/ecmascript/README.md
@@ -97,7 +97,7 @@ ECMAScriptの策定プロセスのステージ4に「2つ以上の実装が存
またTranspilerやPolyfillといった手段で、プロポーザルの機能をエミュレートできる場合があります。
Transpilerとは、新しい構文を既存の機能で再現できるようにソースコードを変換するツールのことです。
-たとえば、ES2015で`class`構文が導入されましたが、ES5では`class`は予約語であるため構文エラーとなり実行することはできません。
+たとえば、ES2015で`class`構文が導入されましたが、ES5では`class`は予約語であるため構文エラーとなり実行できません。
Transpilerでは、`class`構文を含むソースコードを`function`キーワードを使い擬似的に再現するコードへ変換します。
Transpilerとしては[Babel][]や[TypeScript][]などが有名です。
diff --git a/source/basic/error-try-catch/README.md b/source/basic/error-try-catch/README.md
index d5643dd..f6590b4 100644
--- a/source/basic/error-try-catch/README.md
+++ b/source/basic/error-try-catch/README.md
@@ -144,7 +144,7 @@ try {
[SyntaxError][]は構文的に不正なコードを解釈しようとした場合のエラーです。
`SyntaxError`例外はJavaScriptを実行する前のパース段階で発生します。
-この構文エラーは`try...catch`文でcatchすることはできません。
+この構文エラーは`try...catch`文でcatchできません。
```
// 正しくない構文
@@ -186,7 +186,7 @@ try {
### ビルトインエラーを投げる {#throw-built-in-error}
-ユーザーがビルトインエラーのインスタンスを作成することもできます。
+ユーザーがビルトインエラーのインスタンスを作成できます。
通常の`Error`オブジェクトと同じように、それぞれのオブジェクトをnewします。
たとえば関数の引数を数値に限定したい場合は、次のように`TypeError`例外を投げるとよいでしょう。
メッセージを確認しなくても、エラーの名前だけで型に関する例外だとすぐにわかります。
diff --git a/source/basic/function-scope/README.md b/source/basic/function-scope/README.md
index 7becc6a..1fbd459 100644
--- a/source/basic/function-scope/README.md
+++ b/source/basic/function-scope/README.md
@@ -851,7 +851,7 @@ newCountUp(); // => 1
これらはクロージャーの特徴でもあるので、同時に使われることがあります。
たとえば次の例では、`privateCount`という変数を関数の中に定義していますが、
-外からはその変数を直接参照はできません。言い換えると外から直接参照して値を変更することはできません。
+外からはその変数を直接参照はできません。言い換えると外から直接参照して値を変更できません。
外から参照する必要がない変数をクロージャーとなる関数に閉じ込めることは、言い換えるとグローバルに定義する変数を減らすことができます。
{{book.console}}
diff --git a/source/basic/implicit-coercion/README.md b/source/basic/implicit-coercion/README.md
index e1ba710..2e0801b 100644
--- a/source/basic/implicit-coercion/README.md
+++ b/source/basic/implicit-coercion/README.md
@@ -338,7 +338,7 @@ typeof NaN; // => "number"
```
NaNしか持っていない特殊な性質として、自分自身と一致しないという特徴があります。
-この特徴を利用することで、ある値が`NaN`であるかを判定することもできます。
+この特徴を利用することで、ある値が`NaN`であるかを判定できます。
{{book.console}}
```js
@@ -392,7 +392,7 @@ sum(1, undefined, 10); // => NaN
NaN + 10; // => NaN
```
-これは、`sum`関数において引数を明示的にNumber型へ変換したとしても回避することはできません。
+これは、`sum`関数において引数を明示的にNumber型へ変換したとしても回避できません。
つまり、次のように明示的な型変換しても解決できない問題あることが分かります。
{{book.console}}
diff --git a/source/basic/loop/README.md b/source/basic/loop/README.md
index 8e1ac51..b24b359 100644
--- a/source/basic/loop/README.md
+++ b/source/basic/loop/README.md
@@ -347,7 +347,7 @@ for...of文はそれらに対して反復処理を行うことができます。
## [コラム] `let`ではなく`const`で反復処理をする {#const-iteration}
-先ほどのfor文や`forEach`メソッドでは`let`を`const`に変更することはできませんでした。
+先ほどのfor文や`forEach`メソッドでは`let`を`const`に変更できませんでした。
なぜなら、for文は一度定義した変数に値の代入を繰り返し行う処理といえるからです。
`const` は再代入できない変数を宣言するキーワードであるためfor文とは相性がよくありません。
diff --git a/source/basic/object/README.md b/source/basic/object/README.md
index 3049b3d..ff872ca 100644
--- a/source/basic/object/README.md
+++ b/source/basic/object/README.md
@@ -208,7 +208,7 @@ console.log(object[key]); // => "value"
```
JavaScriptのオブジェクトは、変更不可能と明示しない限り、変更可能なmutableの特性をもつことを紹介しました。
-そのため、関数が受け取ったオブジェクトに対して、勝手にプロパティを追加することもできてしまいます。
+そのため、関数が受け取ったオブジェクトに対して、勝手にプロパティを追加できてしまいます。
{{book.console}}
```js
@@ -454,7 +454,7 @@ const merged = Object.assign({}, objectA, objectB);
console.log(merged); // => { a: "a", b: "b" }
```
-第一引数には空のオブジェクトではなく、既存のオブジェクトを指定することもできます。
+第一引数には空のオブジェクトではなく、既存のオブジェクトを指定できます。
第一引数に既存のオブジェクトを指定した場合は、指定されたオブジェクトのプロパティが変更されます。
次のコードでは第一引数に指定された`objectA`に対してプロパティが追加されています。
diff --git a/source/basic/statement-expression/README.md b/source/basic/statement-expression/README.md
index eed8260..24cdc17 100644
--- a/source/basic/statement-expression/README.md
+++ b/source/basic/statement-expression/README.md
@@ -62,7 +62,7 @@ if (isTrue) {
一方、if文などは文であり式になることはできません。
-**式**ではないため、if文を変数へ代入することはできません。
+**式**ではないため、if文を変数へ代入できません。
そのため、次のようなコードは`SyntaxError`となります。
[import, statement-not-expression-invalid.js](src/statement-not-expression-invalid.js)
@@ -165,7 +165,7 @@ JavaScriptには、特殊なルールにもとづき、セミコロンがない
エディタやIDEの中にはセミコロンの入力の補助をしてくれるものや、[ESLint][]などのLintツールを使うことで、
セミコロンが必要なのかをチェックできます。
-セミコロンが必要か見分けるにはある程度慣れが必要ですが、ツールを使い静的にチェックすることもできます。
+セミコロンが必要か見分けるにはある程度慣れが必要ですが、ツールを使い静的にチェックできます。
そのため、ツールなどの支援を受けて経験的に慣れていくこともよい方法といえます。
[関数と宣言]: ../function-declaration/README.md
diff --git a/source/basic/string/README.md b/source/basic/string/README.md
index 18b78e2..03208d3 100644
--- a/source/basic/string/README.md
+++ b/source/basic/string/README.md
@@ -247,7 +247,7 @@ const string = "赤・青・緑".split("・").join("、");
console.log(string); // => "赤、青、緑"
```
-`String#split`メソッドの第一引数には正規表現を指定することもできます。
+`String#split`メソッドの第一引数には正規表現を指定できます。
これを利用すると、次のように文字列をスペースで区切るような処理が簡単に書くことができます。
```js
@@ -367,7 +367,7 @@ console.log("JS" === "ES"); // => false
- 文字列の長さ(length)は同じか
また、`===`などの比較演算子だけではなく、
-`>`、`、`、`>=`、`<=`など大小の関係演算子で文字列同士を比較することもできます。
+`>`、`、`、`>=`、`<=`など大小の関係演算子で文字列同士を比較できます。
これらの関係演算子も、文字列の要素であるCode Unitの数値を先頭から順番に比較します。
しかし、これらの関係演算子は暗黙的な型変換するため、事前に文字列同士であるかのチェックが必要です。
@@ -599,7 +599,7 @@ const pattern = /\s{3}/;
```
一方、`RegExp`コンストラクタは、文字列から正規表現オブジェクトを動的に生成できます。
-正規表現リテラルでは、動的に正規表現オブジェクトを生成することはできません。
+正規表現リテラルでは、動的に正規表現オブジェクトを生成できません。
そのため、`RegExp`コンストラクタは、変数をパターンに埋め込んだ正規表現を生成する際に利用されます。
注意点として、`\`(バックスラッシュ)自体が、文字列中ではエスケープ文字であることに注意してください。
diff --git a/source/basic/variables/README.md b/source/basic/variables/README.md
index f30d4f3..6bf3def 100644
--- a/source/basic/variables/README.md
+++ b/source/basic/variables/README.md
@@ -34,7 +34,7 @@ var bookTitle;
bookTitle = "JavaScriptの本";
```
-変数宣言と同時に初期値を代入することもできます。
+変数宣言と同時に初期値を代入できます。
次の例では、`bookTitle`という変数を宣言し、同時に`"JavaScriptの本"` で初期化しています。
```js
diff --git a/source/intro/feedback/README.md b/source/intro/feedback/README.md
index f8aea72..7d8ff5f 100644
--- a/source/intro/feedback/README.md
+++ b/source/intro/feedback/README.md
@@ -35,7 +35,7 @@ GitHubのアカウントを持っていない方は、次のフォームから
- <https://github.com/asciidwango/js-primer>
-そのため、あなたは問題を報告するだけではなく修正することもできます。
+そのため、あなたは問題を報告するだけではなく修正できます。
GitHubでソースコードが公開されているため、修正内容を[Pull Request][]することで問題を修正できます。
詳しいPull Requestの送り方は[CONTRIBUTING.md][]にかかれているので参考にしてください。
diff --git a/source/use-case/nodecli/helloworld/README.md b/source/use-case/nodecli/helloworld/README.md
index a4dd72b..4b79f18 100644
--- a/source/use-case/nodecli/helloworld/README.md
+++ b/source/use-case/nodecli/helloworld/README.md
@@ -54,7 +54,7 @@ Webブラウザ環境のグローバルオブジェクトは`window`オブジェ
- [Buffer][]
それぞれのグローバルオブジェクトにあるプロパティなどは、同じ名前でグローバル変数や関数としてアクセスできます。
-たとえば`window.document`プロパティは、グローバル変数の`document`としてアクセスすることもできます。
+たとえば`window.document`プロパティは、グローバル変数の`document`としてアクセスできます。
また、ECMAScriptで定義されたものではありませんが、ほぼ同等の機能と名前をもつプロパティや関数がブラウザとNode.jsどちらにもある場合もあります。
たとえば次のようなものです。
diff --git a/source/use-case/nodecli/read-file/README.md b/source/use-case/nodecli/read-file/README.md
index b8281a5..c41a32c 100644
--- a/source/use-case/nodecli/read-file/README.md
+++ b/source/use-case/nodecli/read-file/README.md
@@ -93,7 +93,7 @@ $ node read-file-1b.js sample.md
# sample
```
-ちなみに、次の例のように`readFile`関数の第2引数で文字エンコーディング形式を指定することもできます。
+ちなみに、次の例のように`readFile`関数の第2引数で文字エンコーディング形式を指定できます。
このときのコールバック関数の第2引数は、指定した文字エンコーディングでエンコードされた後の文字列が渡されます。
[import read-file-2.js](src/read-file-2.js)
diff --git a/source/use-case/nodecli/refactor-and-unittest/README.md b/source/use-case/nodecli/refactor-and-unittest/README.md
index 40d347f..3cdd7d5 100644
--- a/source/use-case/nodecli/refactor-and-unittest/README.md
+++ b/source/use-case/nodecli/refactor-and-unittest/README.md
@@ -27,7 +27,7 @@ Node.jsでは、複数のJavaScriptファイル間で変数や関数などをや
[import, greet-index.js](src/example/greet-index.js)
-`module.exports`オブジェクトに直接代入するのではなく、そのプロパティとして任意の値をエクスポートすることもできます。
+`module.exports`オブジェクトに直接代入するのではなく、そのプロパティとして任意の値をエクスポートできます。
次の例では2つの関数を同じファイルからエクスポートしています。
[import, functions.js](src/example/functions.js)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment