` 要素を真のシークバー/スクローラーにする方法はうまくいきそうですか。ヒントとして、要素の左右と上下の X と Y の値は [`getBoundingClientRect()`](/ja/docs/Web/API/Element/getBoundingClientRect) メソッドで、マウスクリックの座標は {{domxref("Document")}} オブジェクトで呼び出されるクリックイベントのオブジェクトで見つけることができます。例を挙げます。
```js
- document.onclick = function(e) {
+ document.onclick = function (e) {
console.log(e.x, e.y);
- }
+ };
```
## 関連情報
diff --git a/files/ja/learn/javascript/first_steps/a_first_splash/index.md b/files/ja/learn/javascript/first_steps/a_first_splash/index.md
index d3bf1b8b0ae22b..625b2a6a24a070 100644
--- a/files/ja/learn/javascript/first_steps/a_first_splash/index.md
+++ b/files/ja/learn/javascript/first_steps/a_first_splash/index.md
@@ -153,21 +153,21 @@ JavaScript の理論、そしてそれを使ってできることについて学
5. 入力された数字が正しいかどうかを調べる。
6. 入力された数字が正しい場合...
- 1. 正解したお祝いのメッセージを表示する。
- 2. プレイヤーが次の予想を出来ないようにする。(ゲームがおかしくならないように)
- 3. プレイヤーが次のゲームを始められるようなコントロールを表示する。
+ 1. 正解したお祝いのメッセージを表示する。
+ 2. プレイヤーが次の予想を出来ないようにする。(ゲームがおかしくならないように)
+ 3. プレイヤーが次のゲームを始められるようなコントロールを表示する。
7. プレイヤーの予想が間違いで、予想回数の上限にはまだ達していない場合...
- 1. プレイヤーが間違っていることを表示する。
- 2. 次の予想を入力できるようにする。
- 3. 予想回数に 1 を加算する。
+ 1. プレイヤーが間違っていることを表示する。
+ 2. 次の予想を入力できるようにする。
+ 3. 予想回数に 1 を加算する。
8. プレイヤーの予想が間違いで、予想回数の上限に達した場合...
- 1. プレイヤーにゲームオーバーであることを伝える。
- 2. プレイヤーが次の予想を出来ないようにする。(ゲームがおかしくならないように)
- 3. プレイヤーが次のゲームを始められるようなコントロールを表示する。
+ 1. プレイヤーにゲームオーバーであることを伝える。
+ 2. プレイヤーが次の予想を出来ないようにする。(ゲームがおかしくならないように)
+ 3. プレイヤーが次のゲームを始められるようなコントロールを表示する。
9. ゲームがもう一度始まったら、画面とロジックが完全にリセットされるようにして、1.に戻る。
@@ -181,9 +181,7 @@ JavaScript の理論、そしてそれを使ってできることについて学
```html
```
@@ -194,12 +192,12 @@ JavaScript の理論、そしてそれを使ってできることについて学
```js
let randomNumber = Math.floor(Math.random() * 100) + 1;
-const guesses = document.querySelector('.guesses');
-const lastResult = document.querySelector('.lastResult');
-const lowOrHi = document.querySelector('.lowOrHi');
+const guesses = document.querySelector(".guesses");
+const lastResult = document.querySelector(".lastResult");
+const lowOrHi = document.querySelector(".lowOrHi");
-const guessSubmit = document.querySelector('.guessSubmit');
-const guessField = document.querySelector('.guessField');
+const guessSubmit = document.querySelector(".guessSubmit");
+const guessField = document.querySelector(".guessField");
let guessCount = 1;
let resetButton;
@@ -225,8 +223,9 @@ let resetButton;
- 次の 2 つの定数にはテキスト入力フォームおよび送信ボタンへの参照が保持され、後で予想の送信をコントロールする際に使用されます。
```html
-
-
+
+
```
- 最後の 2 つの変数はプレイヤーが予想した回数を記録するため 1 を (プレイヤーが何回予想したかの回数を追跡します) 、そしてまだ存在していない(あとで追加する)リセットボタンへの参照を保持します。
@@ -239,7 +238,7 @@ let resetButton;
```js
function checkGuess() {
- alert('ここはプレースホルダです');
+ alert("ここはプレースホルダです");
}
```
@@ -275,9 +274,9 @@ JavaScript で演算子を使用して値の確認をしたり、計算したり
また、 `+` 演算子は 2 つの文字を繋げて一つにするときにも使います。(プログラミングでは文字列を*結合*すると言います。) 下の例も試してみてください。
```js
-let name = 'ビンゴさん';
+let name = "ビンゴさん";
name;
-let hello = 'が、こんにちは!と言っています。';
+let hello = "が、こんにちは!と言っています。";
hello;
let greeting = name + hello;
greeting;
@@ -286,13 +285,13 @@ greeting;
累算[代入演算子](/ja/docs/Web/JavaScript/Reference/Operators/Assignment_Operators)と呼ばれるもっと短い書き方もあります。すでにある文字列に、さらに文字を追加した結果を返したい場合などに使います。例えば、
```js
-name += 'が、こんにちは!と言っています。';
+name += "が、こんにちは!と言っています。";
```
のように書いたとき、次と同じです:
```js
-name = name + 'が、こんにちは!と言っています。';
+name = name + "が、こんにちは!と言っています。";
```
true/false テスト(例えば条件内 - [below](#conditionals)参照)を実行しているとき、[比較演算子](/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)を使用します。例えば:
@@ -363,30 +362,30 @@ true/false テスト(例えば条件内 - [below](#conditionals)参照)を
function checkGuess() {
let userGuess = Number(guessField.value);
if (guessCount === 1) {
- guesses.textContent = '前回の予想: ';
+ guesses.textContent = "前回の予想: ";
}
- guesses.textContent += userGuess + ' ';
+ guesses.textContent += userGuess + " ";
if (userGuess === randomNumber) {
- lastResult.textContent = 'おめでとう! 正解です!';
- lastResult.style.backgroundColor = 'green';
- lowOrHi.textContent = '';
+ lastResult.textContent = "おめでとう! 正解です!";
+ lastResult.style.backgroundColor = "green";
+ lowOrHi.textContent = "";
setGameOver();
} else if (guessCount === 10) {
- lastResult.textContent = '!!!ゲームオーバー!!!';
+ lastResult.textContent = "!!!ゲームオーバー!!!";
setGameOver();
} else {
- lastResult.textContent = '間違いです!';
- lastResult.style.backgroundColor = 'red';
- if(userGuess < randomNumber) {
- lowOrHi.textContent='今の予想は小さすぎです!' ;
- } else if(userGuess > randomNumber) {
- lowOrHi.textContent = '今の予想は大きすぎです!';
+ lastResult.textContent = "間違いです!";
+ lastResult.style.backgroundColor = "red";
+ if (userGuess < randomNumber) {
+ lowOrHi.textContent = "今の予想は小さすぎです!";
+ } else if (userGuess > randomNumber) {
+ lowOrHi.textContent = "今の予想は大きすぎです!";
}
}
guessCount++;
- guessField.value = '';
+ guessField.value = "";
guessField.focus();
}
```
@@ -397,7 +396,7 @@ function checkGuess() {
- 次に、初めて条件分岐を伴うコードブロックが出てきます (3 行目~ 5 行目)。条件分岐は、条件の判定結果が真 (true) であるかどうかによって、次に実行するコードが変わります。見た目が少しだけ関数に似ていますが、違うものです。条件分岐の最も単純な書き方は `if` キーワードから始まり、括弧が続き、中括弧が続きます。括弧の中には分岐する条件を書きます。条件が `true` となれば、中括弧の中にあるコードが実行されます。条件が `true` にならなければ、中括弧の次のコードまで移動します。今回の条件は `guessCount` 変数が `1` であるかどうかを判定しています。(つまり、プレイヤーの初回の予想かどうかを判定しているのです。)
```js
- guessCount === 1
+ guessCount === 1;
```
もしそうなら、`guesses` 段落 ({{htmlelement("p")}}要素) の内容を "`前回の予想:`" に変更します。違うなら、何もしません。
@@ -418,7 +417,7 @@ function checkGuess() {
`checkGuess()` 関数の下に、以下の一文を加えましょう。
```js
-guessSubmit.addEventListener('click', checkGuess);
+guessSubmit.addEventListener("click", checkGuess);
```
`guessSubmit` ボタンに対して、イベントリスナーを追加しました。これは発生したことを知りたいイベントの種類 (この場合は `click`)と、イベントが発生した場合に実行するコード (この場合は `checkGuess()`) の 2 つの入力値 (*引数*と言います) を取る関数です。({{domxref("EventTarget.addEventListener", "addEventListener()")}}の中では括弧を書く必要はありません。)
@@ -433,10 +432,10 @@ guessSubmit.addEventListener('click', checkGuess);
function setGameOver() {
guessField.disabled = true;
guessSubmit.disabled = true;
- resetButton = document.createElement('button');
- resetButton.textContent = '新しいゲームを始める';
+ resetButton = document.createElement("button");
+ resetButton.textContent = "新しいゲームを始める";
document.body.appendChild(resetButton);
- resetButton.addEventListener('click', resetGame);
+ resetButton.addEventListener("click", resetGame);
}
```
@@ -450,19 +449,19 @@ function setGameOver() {
function resetGame() {
guessCount = 1;
- const resetParas = document.querySelectorAll('.resultParas p');
- for (let i = 0 ; i < resetParas.length ; i++) {
- resetParas[i].textContent = '';
+ const resetParas = document.querySelectorAll(".resultParas p");
+ for (let i = 0; i < resetParas.length; i++) {
+ resetParas[i].textContent = "";
}
resetButton.parentNode.removeChild(resetButton);
guessField.disabled = false;
guessSubmit.disabled = false;
- guessField.value = '';
+ guessField.value = "";
guessField.focus();
- lastResult.style.backgroundColor = 'white';
+ lastResult.style.backgroundColor = "white";
randomNumber = Math.floor(Math.random() * 100) + 1;
}
@@ -488,7 +487,9 @@ function resetGame() {
[ブラウザーの開発者ツールの JavaScript コンソール](/ja/docs/Learn/Common_questions/What_are_browser_developer_tools) をもう一度開いて次のコードを入力してみましょう。
```js
-for (let i = 1 ; i < 21 ; i++) { console.log(i) }
+for (let i = 1; i < 21; i++) {
+ console.log(i);
+}
```
どうでしょうか。`1` から `20` の数字がコンソールに出力されましたね。これが繰り返しです。`for` ループには 3 つの入力値 (引数) が必要です。
@@ -500,9 +501,9 @@ for (let i = 1 ; i < 21 ; i++) { console.log(i) }
さて、それでは数字当てゲームに登場したループを見てみましょう。`resetGame()` 関数に以下の記述がありますね。
```js
-const resetParas = document.querySelectorAll('.resultParas p');
-for (let i = 0 ; i < resetParas.length ; i++) {
- resetParas[i].textContent = '';
+const resetParas = document.querySelectorAll(".resultParas p");
+for (let i = 0; i < resetParas.length; i++) {
+ resetParas[i].textContent = "";
}
```
@@ -523,7 +524,7 @@ guessField.focus();
この具体的なケースでは、HTML のテキスト入力フィールドを参照するために、最初に `guessField` 変数を作成しました。以下の行は最上部のあたりの変数定義で見つかります、
```js
-const guessField = document.querySelector('.guessField');
+const guessField = document.querySelector(".guessField");
```
この参照を得るため、{{domxref("document")}} オブジェクトの{{domxref("document.querySelector", "querySelector()")}} メソッドを使用しています。`querySelector()` はある情報 (必要な要素を選択する [CSS セレクタ](/ja/docs/Learn/CSS/Introduction_to_CSS/Selectors)) を受け取ります。
@@ -545,46 +546,46 @@ guessField.focus();
3. `guessField` と入力してみてください。するとコンソールに {{htmlelement("input")}} 要素を含む変数が表示されます。また、気づいたと思いますが、コンソールは実行中の環境にある変数名を含んだオブジェクト名を自動的に補完しました!
4. さらに下のように入力してみてください
- ```js
- guessField.value = 'Hello';
- ```
+ ```js
+ guessField.value = "Hello";
+ ```
- `value` プロパティは今のテキストフィールドに入力された値を表しています。コマンドを入力したら、テキストフィールドの値が変わりましたね!
+ `value` プロパティは今のテキストフィールドに入力された値を表しています。コマンドを入力したら、テキストフィールドの値が変わりましたね!
5. さらに続けて `guesses` と入力して
-
Return
+
Return
- /
+ /
-
Enter
+
Enter
- を押します。{{htmlelement("p")}} 要素を含む変数がコンソールに表示されますね。
+ を押します。{{htmlelement("p")}} 要素を含む変数がコンソールに表示されますね。
6. そして次のコードを入力します
- ```js
- guesses.value
- ```
+ ```js
+ guesses.value;
+ ```
- コンソールには `undefined` (未定義) という文字が返ってきましたね。`value` というプロパティは {{htmlelement("p")}} 要素にはないためです。
+ コンソールには `undefined` (未定義) という文字が返ってきましたね。`value` というプロパティは {{htmlelement("p")}} 要素にはないためです。
7. パラグラフ内のテキストを変えたい場合には、{{domxref("Node.textContent", "textContent")}} プロパティを使用する必要があります。こうしてみます
- ```js
- guesses.textContent = 'Where is my paragraph?';
- ```
+ ```js
+ guesses.textContent = "Where is my paragraph?";
+ ```
8. ちょっと遊んでみましょう。下のコードをひとつづつ入力してみてください。
- ```js
- guesses.style.backgroundColor = 'yellow';
- guesses.style.fontSize = '200%';
- guesses.style.padding = '10px';
- guesses.style.boxShadow = '3px 3px 6px black';
- ```
+ ```js
+ guesses.style.backgroundColor = "yellow";
+ guesses.style.fontSize = "200%";
+ guesses.style.padding = "10px";
+ guesses.style.boxShadow = "3px 3px 6px black";
+ ```
- ページ内に存在するすべての要素は `style` プロパティを持っていて、そのオブジェクトを介して CSS のインラインスタイルで要素に適用されるすべてのプロパティにアクセスすることができます。これを使うことで、JavaScript から動的に要素の CSS のスタイルを設定できるのです。
+ ページ内に存在するすべての要素は `style` プロパティを持っていて、そのオブジェクトを介して CSS のインラインスタイルで要素に適用されるすべてのプロパティにアクセスすることができます。これを使うことで、JavaScript から動的に要素の CSS のスタイルを設定できるのです。
## ここで一息
diff --git a/files/ja/learn/javascript/first_steps/arrays/index.md b/files/ja/learn/javascript/first_steps/arrays/index.md
index 9306f9028f4348..c41584a76cbdcf 100644
--- a/files/ja/learn/javascript/first_steps/arrays/index.md
+++ b/files/ja/learn/javascript/first_steps/arrays/index.md
@@ -25,17 +25,17 @@ slug: Learn/JavaScript/First_steps/Arrays
1. 買い物リストを配列に保持したいとき、次のようにします。下のコードをコンソールに入力してみましょう。
- ```js
- let shopping = ['パン', '牛乳', 'チーズ', 'ハム', '麺'];
- shopping;
- ```
+ ```js
+ let shopping = ["パン", "牛乳", "チーズ", "ハム", "麺"];
+ shopping;
+ ```
2. この例では、配列の各項目は文字列ですが、配列には何でも格納することができることを頭に入れておきましょう。文字列、数値、オブジェクト、その他の変数、さらには別の配列ですら格納することができます。そして混ぜ合わせることも。すべて同じデータ型である必要はありません。
- ```js
- let sequence = [1, 1, 2, 3, 5, 8, 13];
- let random = ['tree', 795, [0, 1, 2]];
- ```
+ ```js
+ let sequence = [1, 1, 2, 3, 5, 8, 13];
+ let random = ["tree", 795, [0, 1, 2]];
+ ```
3. いくつか配列を作ってみましょう。それから先に進みます。
@@ -45,26 +45,26 @@ slug: Learn/JavaScript/First_steps/Arrays
1. 次のコードをコンソールに入力してください。
- ```js
- shopping[0];
- // "パン"という値が戻ります
- ```
+ ```js
+ shopping[0];
+ // "パン"という値が戻ります
+ ```
2. そして、配列中の項目は単に新しい値を代入することで変更することが出来ます。
- ```js
- shopping[0] = 'タヒーニ';
- shopping;
- // ショッピングリストは[ "タヒーニ", "牛乳", "チーズ", "ハム", "麺" ]に変更されています。
- ```
+ ```js
+ shopping[0] = "タヒーニ";
+ shopping;
+ // ショッピングリストは[ "タヒーニ", "牛乳", "チーズ", "ハム", "麺" ]に変更されています。
+ ```
- > **メモ:** 前にも言いましたが、重要なことなのでもう一度言います。コンピューターは 0 から数を数えます!
+ > **メモ:** 前にも言いましたが、重要なことなのでもう一度言います。コンピューターは 0 から数を数えます!
3. 配列の中に配列があるとき、その配列は多次元配列と呼ばれます。配列中の配列に含まれる項目には角括弧を繋げて書くことでアクセスすることができます。例えば、先ほどの例で出てきた `random` 変数に格納された配列の 3 番目の項目のさらに 3 番目の項目を取得するには以下のようにします。
- ```js
- random[2][2];
- ```
+ ```js
+ random[2][2];
+ ```
4. 移動する前に、配列の例をいくつか変更してみてください。遊んでみて、何が動いて何がそうでないかを見てください
@@ -104,97 +104,97 @@ for (let i = 0; i < sequence.length; i++) {
1. それではどのように動くか試してみましょう。まずは文字列をコンソールに作ります。
- ```js
- let myData = '札幌,仙台,東京,名古屋,大阪,博多';
- ```
+ ```js
+ let myData = "札幌,仙台,東京,名古屋,大阪,博多";
+ ```
2. この文字列をカンマで区切ります。
- ```js
- let myArray = myData.split(',');
- myArray;
- ```
+ ```js
+ let myArray = myData.split(",");
+ myArray;
+ ```
3. そして、できた配列の長さを確認して、その中身を見てみましょう。
- ```js
- myArray.length;
- myArray[0]; // 配列の最初の項目
- myArray[1]; // 配列の二番目の項目
- myArray[myArray.length-1]; // 配列の最後の項目
- ```
+ ```js
+ myArray.length;
+ myArray[0]; // 配列の最初の項目
+ myArray[1]; // 配列の二番目の項目
+ myArray[myArray.length - 1]; // 配列の最後の項目
+ ```
4. {{jsxref("Array.prototype.join()","join()")}} メソッドを使うことで、逆のことができます。
- ```js
- let myNewString = myArray.join(',');
- myNewString;
- ```
+ ```js
+ let myNewString = myArray.join(",");
+ myNewString;
+ ```
5. 配列を文字列にするもう一つの方法は、{{jsxref("Array.prototype.toString()","toString()")}} メソッドを使うことです。引数を取らない `toString()` は `join()` と比べ簡単でしょうが、制限があります。`join()` を使えば、他の区切り文字を指定することもできます (4. の例をカンマ以外の他の文字を指定して試してください)。
- ```js
- let dogNames = ['ポチ','ハチ','タロウ','モコ'];
- dogNames.toString(); //ポチ,ハチ,タロウ,モコ
- ```
+ ```js
+ let dogNames = ["ポチ", "ハチ", "タロウ", "モコ"];
+ dogNames.toString(); //ポチ,ハチ,タロウ,モコ
+ ```
### 項目の追加と削除
まだ配列への項目の追加と削除をやっていませんでしたね。次はこれをやりましょう。先ほどの例にあった `myArray` 配列を使用します。先ほどの例をまだ実行していなければ、以下のコードをコンソールに入力して配列を作ってください。
```js
-let myArray = ['札幌', '仙台', '東京', '名古屋', '大阪', '博多'];
+let myArray = ["札幌", "仙台", "東京", "名古屋", "大阪", "博多"];
```
まず、配列の最後に項目を追加したり、最後の項目を削除するには、それぞれ {{jsxref("Array.prototype.push()","push()")}} と {{jsxref("Array.prototype.pop()","pop()")}} を使います。
1. 先に `push()` を使ってみます。配列の最後に項目を追加するには 1 つ以上の項目を引数に指定します。
- ```js
- myArray.push('横浜');
- myArray;
- myArray.push('神戸', '広島');
- myArray;
- ```
+ ```js
+ myArray.push("横浜");
+ myArray;
+ myArray.push("神戸", "広島");
+ myArray;
+ ```
2. メソッドの呼び出しが終わると、新しい配列の長さが返ります。もし新しい配列の長さを変数に格納したければ、次のようにできます。
- ```js
- let newLength = myArray.push('京都');
- myArray;
- newLength;
- ```
+ ```js
+ let newLength = myArray.push("京都");
+ myArray;
+ newLength;
+ ```
3. 配列の最後の要素を削除するには `pop()` を呼び出すだけです。
- ```js
- myArray.pop();
- ```
+ ```js
+ myArray.pop();
+ ```
4. メソッドの呼び出しが終わると、削除された項目それ自体が返ります。
- ```js
- let removedItem = myArray.pop();
- myArray;
- removedItem;
- ```
+ ```js
+ let removedItem = myArray.pop();
+ myArray;
+ removedItem;
+ ```
{{jsxref("Array.prototype.unshift()","unshift()")}} と {{jsxref("Array.prototype.shift()","shift()")}} はそれぞれ `push()` や `pop()` と同様の動作ですが、配列の末尾ではなく先頭において動作します。
1. まずは、`unshift()` を次のように実行します。
- ```js
- myArray.unshift('奈良');
- myArray;
- ```
+ ```js
+ myArray.unshift("奈良");
+ myArray;
+ ```
2. 今度は `shift()` でやってみましょう!
- ```js
- let removedItem = myArray.shift();
- myArray;
- removedItem;
- ```
+ ```js
+ let removedItem = myArray.shift();
+ myArray;
+ removedItem;
+ ```
## アクティブラーニング: 商品を印字しよう!
@@ -211,18 +211,17 @@ let myArray = ['札幌', '仙台', '東京', '名古屋', '大阪', '博多'];
出力結果
コードエディター
-
コードエディターから抜けるには Esc キーを押して下さい(タブキーではタブ文字を挿入します)。
+
+ コードエディターから抜けるには Esc
+ キーを押して下さい(タブキーではタブ文字を挿入します)。
+
-
-
+
+
```
```js hidden
-const textarea = document.getElementById('code');
-const reset = document.getElementById('reset');
-const solution = document.getElementById('solution');
+const textarea = document.getElementById("code");
+const reset = document.getElementById("reset");
+const solution = document.getElementById("solution");
let code = textarea.value;
let userEntry = textarea.value;
@@ -270,41 +269,41 @@ function updateCode() {
eval(textarea.value);
}
-reset.addEventListener('click', function() {
+reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
- solution.value = 'Show solution';
+ solution.value = "Show solution";
updateCode();
});
-solution.addEventListener('click', function() {
- if(solution.value === '答えを見る') {
+solution.addEventListener("click", function () {
+ if (solution.value === "答えを見る") {
textarea.value = solutionEntry;
- solution.value = '答えを隠す';
+ solution.value = "答えを隠す";
} else {
textarea.value = userEntry;
- solution.value = '答えを見る';
+ solution.value = "答えを見る";
}
updateCode();
});
-const jsSolution = 'const list = document.querySelector(\'.output ul\');\nconst totalBox = document.querySelector(\'.output p\');\nlet total = 0;\nlist.innerHTML = \'\';\ntotalBox.textContent = \'\';\n\nlet products = [\'パンツ:6.99\',\n \'靴下:5.99\',\n \'T シャツ:14.99\',\n \'ズボン:31.99\',\n \'靴:23.99\'];\n\nfor(let i = 0; i < products.length; i++) {\n let subArray = products[i].split(\':\');\n let name = subArray[0];\n let price = Number(subArray[1]);\n total += price;\n itemText = name + \' — $\' + price;\n\n let listItem = document.createElement(\'li\');\n listItem.textContent = itemText;\n list.appendChild(listItem);\n}\n\ntotalBox.textContent = \'合計: $\' + total.toFixed(2);';
+const jsSolution =
+ "const list = document.querySelector('.output ul');\nconst totalBox = document.querySelector('.output p');\nlet total = 0;\nlist.innerHTML = '';\ntotalBox.textContent = '';\n\nlet products = ['パンツ:6.99',\n '靴下:5.99',\n 'T シャツ:14.99',\n 'ズボン:31.99',\n '靴:23.99'];\n\nfor(let i = 0; i < products.length; i++) {\n let subArray = products[i].split(':');\n let name = subArray[0];\n let price = Number(subArray[1]);\n total += price;\n itemText = name + ' — $' + price;\n\n let listItem = document.createElement('li');\n listItem.textContent = itemText;\n list.appendChild(listItem);\n}\n\ntotalBox.textContent = '合計: $' + total.toFixed(2);";
let solutionEntry = jsSolution;
-textarea.addEventListener('input', updateCode);
-window.addEventListener('load', updateCode);
+textarea.addEventListener("input", updateCode);
+window.addEventListener("load", updateCode);
// タブキーでテキストエリアから抜けてしまうのを防ぎ、
// 代わりにカーソル位置にタブ文字を挿入する
-textarea.onkeydown = function(e){
+textarea.onkeydown = function (e) {
if (e.keyCode === 9) {
e.preventDefault();
- insertAtCaret('\t');
+ insertAtCaret("\t");
}
-
if (e.keyCode === 27) {
textarea.blur();
}
@@ -313,8 +312,11 @@ textarea.onkeydown = function(e){
function insertAtCaret(text) {
const scrollPos = textarea.scrollTop;
const caretPos = textarea.selectionStart;
- const front = (textarea.value).substring(0, caretPos);
- const back = (textarea.value).substring(textarea.selectionEnd, textarea.value.length);
+ const front = textarea.value.substring(0, caretPos);
+ const back = textarea.value.substring(
+ textarea.selectionEnd,
+ textarea.value.length,
+ );
textarea.value = front + text + back;
caretPos = caretPos + text.length;
@@ -326,10 +328,10 @@ function insertAtCaret(text) {
// ユーザーがテキストエリアのコードを書き換える度に userCode を毎回更新する
-textarea.onkeyup = function(){
+textarea.onkeyup = function () {
// ユーザーのコードが表示されているときのみ状態を保存し、
// 答えのコードでユーザーコードが上書きされないようにする
- if(solution.value === '答えを見る') {
+ if (solution.value === "答えを見る") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
@@ -379,19 +381,17 @@ body {
```html hidden
出力結果
コードエディター
-
コードエディターから抜けるには Esc キーを押して下さい(タブキーではタブ文字を挿入します)。
-
+
+ コードエディターから抜けるには Esc
+ キーを押して下さい(タブキーではタブ文字を挿入します)。
+
-
-
+
+
```
@@ -461,9 +461,9 @@ body {
```
```js hidden
-const textarea = document.getElementById('code');
-const reset = document.getElementById('reset');
-const solution = document.getElementById('solution');
+const textarea = document.getElementById("code");
+const reset = document.getElementById("reset");
+const solution = document.getElementById("solution");
let code = textarea.value;
let userEntry = textarea.value;
@@ -471,38 +471,39 @@ function updateCode() {
eval(textarea.value);
}
-reset.addEventListener('click', function() {
+reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
- solution.value = 'Show solution';
+ solution.value = "Show solution";
updateCode();
});
-solution.addEventListener('click', function() {
- if(solution.value === '答えを見る') {
+solution.addEventListener("click", function () {
+ if (solution.value === "答えを見る") {
textarea.value = solutionEntry;
- solution.value = '答えを隠す';
+ solution.value = "答えを隠す";
} else {
textarea.value = userEntry;
- solution.value = '答えを見る';
+ solution.value = "答えを見る";
}
updateCode();
});
-const jsSolution = 'const list = document.querySelector(\'.output ul\');\nconst searchInput = document.querySelector(\'.output input\');\nconst searchBtn = document.querySelector(\'.output button\');\n\nlist.innerHTML = \'\';\n\nlet myHistory= [];\n\nsearchBtn.onclick = function() {\n if(searchInput.value !== \'\') {\n myHistory.unshift(searchInput.value);\n\n list.innerHTML = \'\';\n\n for(let i = 0; i < myHistory.length; i++) {\n itemText = myHistory[i];\n const listItem = document.createElement(\'li\');\n listItem.textContent = itemText;\n list.appendChild(listItem);\n }\n\n if(myHistory.length >= 5) {\n myHistory.pop();\n }\n\n searchInput.value = \'\';\n searchInput.focus();\n }\n}';
+const jsSolution =
+ "const list = document.querySelector('.output ul');\nconst searchInput = document.querySelector('.output input');\nconst searchBtn = document.querySelector('.output button');\n\nlist.innerHTML = '';\n\nlet myHistory= [];\n\nsearchBtn.onclick = function() {\n if(searchInput.value !== '') {\n myHistory.unshift(searchInput.value);\n\n list.innerHTML = '';\n\n for(let i = 0; i < myHistory.length; i++) {\n itemText = myHistory[i];\n const listItem = document.createElement('li');\n listItem.textContent = itemText;\n list.appendChild(listItem);\n }\n\n if(myHistory.length >= 5) {\n myHistory.pop();\n }\n\n searchInput.value = '';\n searchInput.focus();\n }\n}";
let solutionEntry = jsSolution;
-textarea.addEventListener('input', updateCode);
-window.addEventListener('load', updateCode);
+textarea.addEventListener("input", updateCode);
+window.addEventListener("load", updateCode);
// タブキーでテキストエリアから抜けてしまうのを防ぎ、
// 代わりにカーソル位置にタブ文字を挿入する
-textarea.onkeydown = function(e){
+textarea.onkeydown = function (e) {
if (e.keyCode === 9) {
e.preventDefault();
- insertAtCaret('\t');
+ insertAtCaret("\t");
}
if (e.keyCode === 27) {
@@ -513,8 +514,11 @@ textarea.onkeydown = function(e){
function insertAtCaret(text) {
const scrollPos = textarea.scrollTop;
const caretPos = textarea.selectionStart;
- const front = (textarea.value).substring(0, caretPos);
- const back = (textarea.value).substring(textarea.selectionEnd, textarea.value.length);
+ const front = textarea.value.substring(0, caretPos);
+ const back = textarea.value.substring(
+ textarea.selectionEnd,
+ textarea.value.length,
+ );
textarea.value = front + text + back;
caretPos = caretPos + text.length;
textarea.selectionStart = caretPos;
@@ -525,10 +529,10 @@ function insertAtCaret(text) {
// ユーザーがテキストエリアのコードを書き換える度に userCode を毎回更新する
-textarea.onkeyup = function(){
+textarea.onkeyup = function () {
// ユーザーのコードが表示されているときのみ状態を保存し、
// 答えのコードでユーザーコードが上書きされないようにする
- if(solution.value === '答えを見る') {
+ if (solution.value === "答えを見る") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
diff --git a/files/ja/learn/javascript/first_steps/math/index.md b/files/ja/learn/javascript/first_steps/math/index.md
index d06dfeea3a9964..ba8ac8625437a2 100644
--- a/files/ja/learn/javascript/first_steps/math/index.md
+++ b/files/ja/learn/javascript/first_steps/math/index.md
@@ -43,22 +43,22 @@ slug: Learn/JavaScript/First_steps/Math
1. まず、変数を 2 つ宣言して、それぞれ整数と浮動小数点数で初期化してみましょう。そして、変数の名前を入力して、期待通りに値が入っていることを確認してみましょう。
- ```js
- var myInt = 5;
- var myFloat = 6.667;
- myInt;
- myFloat;
- ```
+ ```js
+ var myInt = 5;
+ var myFloat = 6.667;
+ myInt;
+ myFloat;
+ ```
2. 数値にはクォーテーションマークが不要です。次に進む前にもう少し変数の宣言と初期化をしてみてください。
3. さて、それでは上で入力した 2 つの変数が同じデータ型であるか確認してみましょう。JavaScript では、{{jsxref("Operators/typeof", "typeof")}} という演算子を使用することで、データ型を確認することができます。次の 2 行を入力してみましょう。
- ```js
- typeof myInt;
- typeof myFloat;
- ```
+ ```js
+ typeof myInt;
+ typeof myFloat;
+ ```
- どちらの変数についても `"number"` という文字が戻ってきましたね。もし、別々の数値型が存在しているとすれば、別々に処理しなければならないので、そう考えるととても簡単に思えますよね!
+ どちらの変数についても `"number"` という文字が戻ってきましたね。もし、別々の数値型が存在しているとすれば、別々に処理しなければならないので、そう考えるととても簡単に思えますよね!
### 便利な Number メソッド
@@ -80,7 +80,7 @@ twoDecimalPlaces;
例えば、これらの命令をコンソールに入力してみてください。
```js
-let myNumber = '74';
+let myNumber = "74";
myNumber + 3;
```
@@ -117,29 +117,29 @@ Number(myNumber) + 3;
1. まずは次のような簡単な例を自分で試してみてください。
- ```js
- 10 + 7
- 9 * 8
- 60 % 3
- ```
+ ```js
+ 10 + 7;
+ 9 * 8;
+ 60 % 3;
+ ```
2. そして、変数を宣言して初期化し、数を変数に格納します。それから変数を使って計算してみましょう。変数は計算するにあたり、保持している値がそこにあるかのように使えます。例えば次の通り。
- ```js
- let num1 = 10;
- let num2 = 50;
- 9 * num1;
- num1 ** 3;
- num2 / num1;
- ```
+ ```js
+ let num1 = 10;
+ let num2 = 50;
+ 9 * num1;
+ num1 ** 3;
+ num2 / num1;
+ ```
3. それではさらに難しい計算式を入力してみましょう。
- ```js
- 5 + 10 * 3;
- num2 % 9 * num1;
- num2 + num1 / 8 + 2;
- ```
+ ```js
+ 5 + 10 * 3;
+ (num2 % 9) * num1;
+ num2 + num1 / 8 + 2;
+ ```
最後の例の中に予想した結果と違う答えがありませんでしたか。次の章でなぜそうなったかを説明してみましょう。
@@ -286,18 +286,18 @@ x *= y; // x は 12 になる
```
```js
-const btn = document.querySelector('button');
-const txt = document.querySelector('p');
+const btn = document.querySelector("button");
+const txt = document.querySelector("p");
-btn.addEventListener('click', updateBtn);
+btn.addEventListener("click", updateBtn);
function updateBtn() {
- if (btn.textContent === '起動する') {
- btn.textContent = '停止する';
- txt.textContent = 'マシンが起動しました!';
+ if (btn.textContent === "起動する") {
+ btn.textContent = "停止する";
+ txt.textContent = "マシンが起動しました!";
} else {
- btn.textContent = '起動する';
- txt.textContent = 'マシンは停止中です。';
+ btn.textContent = "起動する";
+ txt.textContent = "マシンは停止中です。";
}
}
```
diff --git a/files/ja/learn/javascript/first_steps/silly_story_generator/index.md b/files/ja/learn/javascript/first_steps/silly_story_generator/index.md
index a80aece8abc507..68b7577b7b263d 100644
--- a/files/ja/learn/javascript/first_steps/silly_story_generator/index.md
+++ b/files/ja/learn/javascript/first_steps/silly_story_generator/index.md
@@ -49,18 +49,18 @@ HTML および CSS と少しのテキストと JavaScript 関数があります
1. 先ほどのテキストファイル内の "1. COMPLETE VARIABLE AND FUNCTION DEFINITIONS" という見出しの直後にあるコードをコピーして `main.js` の先頭に貼り付けます。これで "Enter custom name" テキストフィールド (`customName`) 、"Generate random story" ボタン (`randomize`) 、HTML の body の下のほうにある {{htmlelement("p")}} 要素 (`story`) への参照を保持することができます。さらに `randomValueFromArray()` という、引数として配列を取りその配列からランダムに 1 つの項目を戻り値として返す関数が使えるようになります。
2. 次にテキストファイルの 2 番目のセクションを見てみましょう。"2. RAW TEXT STRINGS" という見出しのところです。このプログラムの入力となる文字列が書かれています。`main.js` の内部で使用できるように、これらの文字列を変数に保持してください。
- 1. 先頭の長い長い文字列を `storyText` という変数に格納します。
- 2. 3 つセットになっている最初の文字列の組を `insertX` という配列に格納します。
- 3. 2 組目の文字列を `insertY` という配列に格納します。
- 4. 3 組目の文字列を `insertZ` という配列に格納します。
+ 1. 先頭の長い長い文字列を `storyText` という変数に格納します。
+ 2. 3 つセットになっている最初の文字列の組を `insertX` という配列に格納します。
+ 3. 2 組目の文字列を `insertY` という配列に格納します。
+ 4. 3 組目の文字列を `insertZ` という配列に格納します。
イベントハンドラーと未完成の関数の配置:
1. テキストファイルに戻ります。
2. "3. EVENT LISTENER AND PARTIAL FUNCTION DEFINITION" という見出しの直後にあるコードをコピーして `main.js` ファイルの最後に貼り付けます。これで、
- - `randomize` 変数へのクリックイベントリスナーが追加され、その変数に紐づくボタンが押された場合に `result()` 関数が実行されるようになります。
- - 部分的に実装されている `result()` 関数の定義が追加されます。この課題の中で、この関数の残りを実装し、正しく動作するようにします。
+ - `randomize` 変数へのクリックイベントリスナーが追加され、その変数に紐づくボタンが押された場合に `result()` 関数が実行されるようになります。
+ - 部分的に実装されている `result()` 関数の定義が追加されます。この課題の中で、この関数の残りを実装し、正しく動作するようにします。
`result()` 関数の作成
@@ -70,10 +70,10 @@ HTML および CSS と少しのテキストと JavaScript 関数があります
4. 最初の `if` ブロックで、`newStory` の文字列内で見つかる 'Bob' という文字列を `name` 変数の値で置換するため、別の文字列置換のメソッド呼び出し追加します。このブロック内では、「もし ( if ) `customName` テキストフィールドに何かが入力されていれば、Bob をその文字列で置き換える」ということを言っています。
5. 次の `if` ブロックの中では、`uk` のラジオボタンが選択されているかどうかを調べています。もし選択されているのなら、重さと温度の単位をポンド・華氏から、ストーン・摂氏に変換したいと思います。そのために必要なことは...
- 1. ポンドからストーンへ変換する公式、および、華氏から摂氏へ変換する公式を調べます。
- 2. `weight` 変数が宣言されている行内の、300 を ポンドからストーンに変換した値で置き換えます。そして `' stone'` (ストーン) を `Math.round()` の結果に対して、その後ろに結合します。
- 3. `temperature` 変数が宣言されている行内の、94 を華氏から摂氏に変換した値で置き換えます。こちらには `' centigrade'` (摂氏~度) という文字を `Math.round()` の結果に対して、後ろに結合します。
- 4. 上記 2 つの変数の宣言の直後に、さらにもう 2 つ文字列を置換するコードを書いて、'94 farenheit' を `temperature` 変数の内容に、'300 pounds' を `weight` 変数の内容にそれぞれ置換します。
+ 1. ポンドからストーンへ変換する公式、および、華氏から摂氏へ変換する公式を調べます。
+ 2. `weight` 変数が宣言されている行内の、300 を ポンドからストーンに変換した値で置き換えます。そして `' stone'` (ストーン) を `Math.round()` の結果に対して、その後ろに結合します。
+ 3. `temperature` 変数が宣言されている行内の、94 を華氏から摂氏に変換した値で置き換えます。こちらには `' centigrade'` (摂氏~度) という文字を `Math.round()` の結果に対して、後ろに結合します。
+ 4. 上記 2 つの変数の宣言の直後に、さらにもう 2 つ文字列を置換するコードを書いて、'94 farenheit' を `temperature` 変数の内容に、'300 pounds' を `weight` 変数の内容にそれぞれ置換します。
6. 最後に、関数の下から 2 行目にある、`story` 変数の `textContent` プロパティ(段落を参照している) を、`newStory` 変数の内容で置き換えます。
@@ -83,7 +83,7 @@ HTML および CSS と少しのテキストと JavaScript 関数があります
- もし、JavaScript が HTML に適切に適用されているかどうかを知りたければ、JavaScript ファイルから一時的に全てのコードを削除して、確実に何かが起きるようなコードを追加して、JavaScript ファイルを保存して HTML ファイルを更新してみましょう。次の例は {{htmlelement("html")}} 要素の背景色を赤くするコードです。JavaScript が適切に HTML に適用されていれば、ブラウザーのウィンドウが真っ赤になることでしょう。
```js
- document.querySelector('html').style.backgroundColor = 'red';
+ document.querySelector("html").style.backgroundColor = "red";
```
- [Math.round()](/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/round) は JavaScript の組み込みメソッドで、計算結果を整数値に四捨五入します。
diff --git a/files/ja/learn/javascript/first_steps/strings/index.md b/files/ja/learn/javascript/first_steps/strings/index.md
index fc96fa677763eb..c0ebf081b422d6 100644
--- a/files/ja/learn/javascript/first_steps/strings/index.md
+++ b/files/ja/learn/javascript/first_steps/strings/index.md
@@ -39,11 +39,11 @@ l10n:
1. 初めに、次の行を入力してみましょう。
```js
- const string = '革命はテレビでは放送されない。';
+ const string = "革命はテレビでは放送されない。";
console.log(string);
```
- 数値のところでやったのと同じように、変数を宣言して、値を入れて初期化しています。そして値を返しています。ただ違うのは、文字列が引用符で囲まれて書かれていることです。
+ 数値のところでやったのと同じように、変数を宣言して、値を入れて初期化しています。そして値を返しています。ただ違うのは、文字列が引用符で囲まれて書かれていることです。
2. もし引用符で囲わななかったり、どちらか一方を書き忘れたりすると、エラーになります。
@@ -68,7 +68,7 @@ l10n:
1. JavaScript では、文字列を囲む引用符として、単一引用符と二重引用符を使用することができます。以下のどちらの例も正しく動きます。
- ```js
+ ```js-nolint
const sgl = '単一引用符';
const dbl = "二重引用符";
console.log(sgl);
@@ -102,7 +102,7 @@ l10n:
先ほどのコード行を直すには、問題となっている引用符をエスケープする必要があります。文字のエスケープとは、その文字が、コードではなく、文字列の一部であるとブラウザーに認識させる書き方です。JavaScript ではバックスラッシュ ( \ \[環境によっては円マーク (¥)]) を文字の前におくことでエスケープすることができます。
-```js
+```js-nolint example-good
const bigmouth = 'I\'ve got no right to take my place…';
console.log(bigmouth);
```
diff --git a/files/ja/learn/javascript/first_steps/test_your_skills_colon__arrays/index.md b/files/ja/learn/javascript/first_steps/test_your_skills_colon__arrays/index.md
index c0693a8708026e..c44923c597fe1f 100644
--- a/files/ja/learn/javascript/first_steps/test_your_skills_colon__arrays/index.md
+++ b/files/ja/learn/javascript/first_steps/test_your_skills_colon__arrays/index.md
@@ -1,5 +1,5 @@
---
-title: 'スキルテスト: 配列'
+title: "スキルテスト: 配列"
slug: Learn/JavaScript/First_steps/Test_your_skills:_Arrays
l10n:
sourceCommit: 4f6ba2f5a1615fe155292cac416c7ab6b9d711ec
@@ -86,7 +86,7 @@ l10n:
1. 作品を、[CodePen](https://codepen.io/), [jsFiddle](https://jsfiddle.net/), または [Glitch](https://glitch.com/). のような共有可能なオンラインエディターに置いてください。いちから自身でコードを記述することもできますし、上記のセクションでリンク付けされている準備済みファイルを利用するのもよいでしょう。
2. [MDN Discourse forum Learning category](https://discourse.mozilla.org/c/mdn/learn/250) で評価を希望したり、助けを求める投稿をしてください。(英語)投稿には以下のことを書きましょう。
- - "Assessment wanted for Variables 1 skill test"のような説明的なタイトル
- - これまで試したことの詳細、そして私たちに何をしてほしいか。例えば、行き詰まって助けが必要だとか、評価をしてほしいなど。
- - 評価してほしかったり、助けが必要な作品へのリンク。共有可能なオンラインエディター(上記ステップ 1 で述べたもの)を使って。これは分かりやすくするためのよい手法です。 — コードが見えない状態で、コーディングの問題を抱えている人を助けることはとても難しいことです。
- - 実際のタスクまたは評価ページのリンク。そうすれば、どの質問に助けが必要かがわかります。
+ - "Assessment wanted for Variables 1 skill test"のような説明的なタイトル
+ - これまで試したことの詳細、そして私たちに何をしてほしいか。例えば、行き詰まって助けが必要だとか、評価をしてほしいなど。
+ - 評価してほしかったり、助けが必要な作品へのリンク。共有可能なオンラインエディター(上記ステップ 1 で述べたもの)を使って。これは分かりやすくするためのよい手法です。 — コードが見えない状態で、コーディングの問題を抱えている人を助けることはとても難しいことです。
+ - 実際のタスクまたは評価ページのリンク。そうすれば、どの質問に助けが必要かがわかります。
diff --git a/files/ja/learn/javascript/first_steps/test_your_skills_colon__math/index.md b/files/ja/learn/javascript/first_steps/test_your_skills_colon__math/index.md
index f860e9b158ff44..e1021000f6ed3a 100644
--- a/files/ja/learn/javascript/first_steps/test_your_skills_colon__math/index.md
+++ b/files/ja/learn/javascript/first_steps/test_your_skills_colon__math/index.md
@@ -1,5 +1,5 @@
---
-title: 'あなたのスキルをテストしよう: 数学'
+title: "あなたのスキルをテストしよう: 数学"
slug: Learn/JavaScript/First_steps/Test_your_skills:_Math
---
@@ -63,7 +63,7 @@ slug: Learn/JavaScript/First_steps/Test_your_skills:_Math
1. あなたの制作物を、[CodePen](https://codepen.io/)、[jsFiddle](https://jsfiddle.net/)、または [Glitch](https://glitch.com/) のような共有可能なオンラインエディターに置いてください。いちから自身でコードを記述することもできますし、上記のセクションでリンク付けされている準備済みファイルを利用するのもよいでしょう。
2. [MDN Discourse forum Learning category](https://discourse.mozilla.org/c/mdn/learn) で、評価を希望したり、助けを求めるポストを投稿してください。ポストには以下を含みましょう:
- - "Assessment wanted for Math 1 skill test" のような説明的なタイトル
- - あなたがこれまで試したことの詳細、そしてあなたが私たちに何をしてほしいか。例えば、行き詰まって助けが必要だとか、評価をしてほしいなど。
- - 評価してほしかったり、助けが必要な作成物へのリンク。共有可能なオンラインエディター(上記ステップ 1 で述べたもの)を使って。これは分かりやすくするためのよい実践方法でしょう — コードが見れない状態で、コーディング問題を抱えている人を助けることはとても難しいですよね。
- - 実際のタスクまたは評価ページのリンク。そうすれば、あなたがどの質問に助けが必要かがわかります。
+ - "Assessment wanted for Math 1 skill test" のような説明的なタイトル
+ - あなたがこれまで試したことの詳細、そしてあなたが私たちに何をしてほしいか。例えば、行き詰まって助けが必要だとか、評価をしてほしいなど。
+ - 評価してほしかったり、助けが必要な作成物へのリンク。共有可能なオンラインエディター(上記ステップ 1 で述べたもの)を使って。これは分かりやすくするためのよい実践方法でしょう — コードが見れない状態で、コーディング問題を抱えている人を助けることはとても難しいですよね。
+ - 実際のタスクまたは評価ページのリンク。そうすれば、あなたがどの質問に助けが必要かがわかります。
diff --git a/files/ja/learn/javascript/first_steps/useful_string_methods/index.md b/files/ja/learn/javascript/first_steps/useful_string_methods/index.md
index c31b93f586d478..e6f97ec6b6ad3e 100644
--- a/files/ja/learn/javascript/first_steps/useful_string_methods/index.md
+++ b/files/ja/learn/javascript/first_steps/useful_string_methods/index.md
@@ -16,7 +16,7 @@ slug: Learn/JavaScript/First_steps/Useful_string_methods
JavaScript ではほとんどのものはオブジェクトです。たとえば、次のように文字列を作った時も、
```js
-let string = 'This is my string';
+let string = "This is my string";
```
この変数は文字列オブジェクトのインスタンスになり、大量のプロパティとメソッドが使用可能となります。{{jsxref("String")}} オブジェクトのページに行って、横にある一覧を眺めてみてください!
@@ -30,7 +30,7 @@ let string = 'This is my string';
ただ {{jsxref("String.prototype.length", "length")}} プロパティを使用すればよいので、とても簡単です。次の行を入力してみましょう。
```js
-let browserType = 'mozilla';
+let browserType = "mozilla";
browserType.length;
```
@@ -49,7 +49,7 @@ browserType[0];
文字列の一番最後の文字を取得したいときは、先ほどの `length` プロパティと組み合わせて以下のようにします。
```js
-browserType[browserType.length-1];
+browserType[browserType.length - 1];
```
"mozilla" の長さは 7 ですが、0 から始まるので、最後の文字の位置は 6 になります。よって `length-1` とする必要があるのです。
@@ -62,49 +62,49 @@ browserType[browserType.length-1];
1. 以下を試してみましょう。
- ```js
- browserType.indexOf('zilla');
- ```
+ ```js
+ browserType.indexOf("zilla");
+ ```
- このコードは 2 を返します。なぜならば、"mozilla"という文字列中で、部分文字列"zilla"の開始位置が 2 (0、1、2 — つまり 3 文字目)であるからです。このようなコードは文字列を絞り込むときなどに使います。例えば、ウェブサイトのアドレスの一覧があったとき、その中から"mozilla"を含むものだけを表示したい場合などです。
+ このコードは 2 を返します。なぜならば、"mozilla"という文字列中で、部分文字列"zilla"の開始位置が 2 (0、1、2 — つまり 3 文字目)であるからです。このようなコードは文字列を絞り込むときなどに使います。例えば、ウェブサイトのアドレスの一覧があったとき、その中から"mozilla"を含むものだけを表示したい場合などです。
2. 部分文字列が含まれてることを確認するもう一つの方法があり、こちらのほうが効果的な場合があります。
- ```js
- browserType.indexOf('vanilla');
- ```
+ ```js
+ browserType.indexOf("vanilla");
+ ```
- 上記のコードは `-1` を返します。これは部分文字列 (この場合は 'vanilla') がメインの文字列の中に見つからなかった場合に返されます。
+ 上記のコードは `-1` を返します。これは部分文字列 (この場合は 'vanilla') がメインの文字列の中に見つからなかった場合に返されます。
- これを使って、部分文字列 'mozilla' を**含まない** (あるいは否定演算子 `!==` を使うなら**含む**) 文字列のすべてのインスタンスを見つけることができます。
+ これを使って、部分文字列 'mozilla' を**含まない** (あるいは否定演算子 `!==` を使うなら**含む**) 文字列のすべてのインスタンスを見つけることができます。
- ```js
- if(browserType.indexOf('mozilla') === -1) {
- // もし部分文字列 'mozilla' が含まれていない場合は、
- // 文字列で何かをします。
- }
+ ```js
+ if (browserType.indexOf("mozilla") === -1) {
+ // もし部分文字列 'mozilla' が含まれていない場合は、
+ // 文字列で何かをします。
+ }
- if(browserType.indexOf('mozilla') !== -1) {
- // もし部分文字列 'mozilla' が含まれている場合は、
- // 文字列で何かをします。
- }
- ```
+ if (browserType.indexOf("mozilla") !== -1) {
+ // もし部分文字列 'mozilla' が含まれている場合は、
+ // 文字列で何かをします。
+ }
+ ```
3. 部分文字列がその文字列のどこから始まるかが分かっており、どこで終わっているかがわかれば、その部分文字列を {{jsxref("String.prototype.slice()", "slice()")}} メソッドを使用することで抽出することができます。
- ```js
- browserType.slice(0,3);
- ```
+ ```js
+ browserType.slice(0, 3);
+ ```
- このコードは "moz" という文字列を返します。最初の引数は抽出を始める最初の位置で、2 番目の引数が抽出する最後の文字の直後の位置です。つまり、この場合先頭から 4 番目の手前までの文字列が切り出されたということです。言い換えると、この場合は 2 番目の引数と同じ 3 文字が切り出されました。
+ このコードは "moz" という文字列を返します。最初の引数は抽出を始める最初の位置で、2 番目の引数が抽出する最後の文字の直後の位置です。つまり、この場合先頭から 4 番目の手前までの文字列が切り出されたということです。言い換えると、この場合は 2 番目の引数と同じ 3 文字が切り出されました。
4. また、ある文字以降の文字列の残りの文字をすべて抽出したいとわかっている場合は、2 番目のパラメータを含める必要はありません!その代わり、文字列内の残りの文字を抽出したい文字の位置を含める必要があるだけです。次のようにしてみてください。
- ```js
- browserType.slice(2);
- ```
+ ```js
+ browserType.slice(2);
+ ```
- この例は "zilla" という文字列を返します。なぜなら、2 の位置にある文字は z であり、2 番目の引数を指定していないため、3 文字目から最後までが部分文字列として戻ったのです。
+ この例は "zilla" という文字列を返します。なぜなら、2 の位置にある文字は z であり、2 番目の引数を指定していないため、3 文字目から最後までが部分文字列として戻ったのです。
> **メモ:** `slice()` の 2 番目の引数はオプション (任意指定) です。もし指定しなければ、元々の文字列の最後まで切り出しを行います。他にもオプションがありますので、さらに詳しく知りたければ{{jsxref("String.prototype.slice()", "slice()")}}のページで調べてみましょう。
@@ -115,7 +115,7 @@ String には{{jsxref("String.prototype.toLowerCase()", "toLowerCase()")}}と{{j
それでは次の行を入力し、何が起きるか見てみましょう。
```js
-let radData = 'My NaMe Is MuD';
+let radData = "My NaMe Is MuD";
radData.toLowerCase();
radData.toUpperCase();
```
@@ -127,7 +127,7 @@ radData.toUpperCase();
検索する文字列と、置き換える文字列の 2 つを引数に取ります。次の例を実行してみてください。
```js
-browserType.replace('moz','van');
+browserType.replace("moz", "van");
```
これはコンソールで"vanilla"を返しますが、`browserType` の値は、"mozilla"のままです。プログラムで変数 `browserType` の値を実際に更新するには、演算の結果を変数に設定し直す必要があります。つまりそれ変数に設定されている部分文字列を自動的には更新してくれないのです。従って実際に変数の内容を更新するためには `browserType = browserType.replace('moz','van');` のように書きます。
@@ -150,15 +150,14 @@ browserType.replace('moz','van');
出力結果
コードエディタ
-
コードエディタから抜けるには Esc キーを押して下さい(タブキーではタブ文字を挿入します)。
+
+ コードエディタから抜けるには Esc
+ キーを押して下さい(タブキーではタブ文字を挿入します)。
+
-
-
+
+
```
@@ -209,9 +208,9 @@ body {
```
```js hidden
-const textarea = document.getElementById('code');
-const reset = document.getElementById('reset');
-const solution = document.getElementById('solution');
+const textarea = document.getElementById("code");
+const reset = document.getElementById("reset");
+const solution = document.getElementById("solution");
let code = textarea.value;
let userEntry = textarea.value;
@@ -219,55 +218,56 @@ function updateCode() {
eval(textarea.value);
}
-reset.addEventListener('click', function() {
+reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
- solution.value = '答えを見る';
+ solution.value = "答えを見る";
updateCode();
});
-solution.addEventListener('click', function() {
- if(solution.value === '答えを見る') {
+solution.addEventListener("click", function () {
+ if (solution.value === "答えを見る") {
textarea.value = solutionEntry;
- solution.value = '答えを隠す';
+ solution.value = "答えを隠す";
} else {
textarea.value = userEntry;
- solution.value = '答えを見る';
+ solution.value = "答えを見る";
}
updateCode();
});
-const jsSolution = 'const list = document.querySelector(\'.output ul\');' +
-'\nlist.innerHTML = \'\';' +
-'\nlet greetings = [\'Happy Birthday!\',' +
-'\n \'Merry Christmas my love\',' +
-'\n \'A happy Christmas to all the family\',' +
-'\n \'You\\\'re all I want for Christmas\',' +
-'\n \'Get well soon\'];' +
-'\n' +
-'\nfor (let i = 0; i < greetings.length; i++) {' +
-'\n let input = greetings[i];' +
-'\n if (greetings[i].indexOf(\'Christmas\') !== -1) {' +
-'\n let result = input;' +
-'\n let listItem = document.createElement(\'li\');' +
-'\n listItem.textContent = result;' +
-'\n list.appendChild(listItem);' +
-'\n }' +
-'\n}';
+const jsSolution =
+ "const list = document.querySelector('.output ul');" +
+ "\nlist.innerHTML = '';" +
+ "\nlet greetings = ['Happy Birthday!'," +
+ "\n 'Merry Christmas my love'," +
+ "\n 'A happy Christmas to all the family'," +
+ "\n 'You\\'re all I want for Christmas'," +
+ "\n 'Get well soon'];" +
+ "\n" +
+ "\nfor (let i = 0; i < greetings.length; i++) {" +
+ "\n let input = greetings[i];" +
+ "\n if (greetings[i].indexOf('Christmas') !== -1) {" +
+ "\n let result = input;" +
+ "\n let listItem = document.createElement('li');" +
+ "\n listItem.textContent = result;" +
+ "\n list.appendChild(listItem);" +
+ "\n }" +
+ "\n}";
let solutionEntry = jsSolution;
-textarea.addEventListener('input', updateCode);
-window.addEventListener('load', updateCode);
+textarea.addEventListener("input", updateCode);
+window.addEventListener("load", updateCode);
// タブキーでテキストエリアから抜けてしまうのを防ぎ、
// 代わりにカーソル位置にタブ文字を挿入する
-textarea.onkeydown = function(e){
+textarea.onkeydown = function (e) {
if (e.keyCode === 9) {
e.preventDefault();
- insertAtCaret('\t');
+ insertAtCaret("\t");
}
if (e.keyCode === 27) {
@@ -278,8 +278,11 @@ textarea.onkeydown = function(e){
function insertAtCaret(text) {
const scrollPos = textarea.scrollTop;
const caretPos = textarea.selectionStart;
- const front = (textarea.value).substring(0, caretPos);
- const back = (textarea.value).substring(textarea.selectionEnd, textarea.value.length);
+ const front = textarea.value.substring(0, caretPos);
+ const back = textarea.value.substring(
+ textarea.selectionEnd,
+ textarea.value.length,
+ );
textarea.value = front + text + back;
caretPos = caretPos + text.length;
@@ -291,10 +294,10 @@ function insertAtCaret(text) {
// ユーザーがテキストエリアのコードを書き換える度に userCode を毎回更新する
-textarea.onkeyup = function(){
+textarea.onkeyup = function () {
// ユーザーのコードが表示されているときのみ状態を保存し、
// 答えのコードでユーザーコードが上書きされないようにする
- if(solution.value === '答えを見る') {
+ if (solution.value === "答えを見る") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
@@ -321,15 +324,14 @@ textarea.onkeyup = function(){
出力結果
コードエディタ
-
コードエディタから抜けるには Esc キーを押して下さい(タブキーではタブ文字を挿入します)。
+
+ コードエディタから抜けるには Esc
+ キーを押して下さい(タブキーではタブ文字を挿入します)。
+
-
-
+
+
```
@@ -375,9 +377,9 @@ body {
```
```js hidden
-const textarea = document.getElementById('code');
-const reset = document.getElementById('reset');
-const solution = document.getElementById('solution');
+const textarea = document.getElementById("code");
+const reset = document.getElementById("reset");
+const solution = document.getElementById("solution");
let code = textarea.value;
let userEntry = textarea.value;
@@ -385,53 +387,54 @@ function updateCode() {
eval(textarea.value);
}
-reset.addEventListener('click', function() {
+reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
- solution.value = '答えを見る';
+ solution.value = "答えを見る";
updateCode();
});
-solution.addEventListener('click', function() {
- if(solution.value === '答えを見る') {
+solution.addEventListener("click", function () {
+ if (solution.value === "答えを見る") {
textarea.value = solutionEntry;
- solution.value = '答えを隠す';
+ solution.value = "答えを隠す";
} else {
textarea.value = userEntry;
- solution.value = '答えを見る';
+ solution.value = "答えを見る";
}
updateCode();
});
-const jsSolution = 'const list = document.querySelector(\'.output ul\');' +
-'\nlist.innerHTML = \'\';' +
-'\nlet cities = [\'lonDon\', \'ManCHESTer\', \'BiRmiNGHAM\', \'liVERpoOL\'];' +
-'\n' +
-'\nfor (let i = 0; i < cities.length; i++) {' +
-'\n let input = cities[i];' +
-'\n let lower = input.toLowerCase();' +
-'\n let firstLetter = lower.slice(0,1);' +
-'\n let capitalized = lower.replace(firstLetter,firstLetter.toUpperCase());' +
-'\n let result = capitalized;' +
-'\n let listItem = document.createElement(\'li\');' +
-'\n listItem.textContent = result;' +
-'\n list.appendChild(listItem);' +
-'\n' +
-'\n}';
+const jsSolution =
+ "const list = document.querySelector('.output ul');" +
+ "\nlist.innerHTML = '';" +
+ "\nlet cities = ['lonDon', 'ManCHESTer', 'BiRmiNGHAM', 'liVERpoOL'];" +
+ "\n" +
+ "\nfor (let i = 0; i < cities.length; i++) {" +
+ "\n let input = cities[i];" +
+ "\n let lower = input.toLowerCase();" +
+ "\n let firstLetter = lower.slice(0,1);" +
+ "\n let capitalized = lower.replace(firstLetter,firstLetter.toUpperCase());" +
+ "\n let result = capitalized;" +
+ "\n let listItem = document.createElement('li');" +
+ "\n listItem.textContent = result;" +
+ "\n list.appendChild(listItem);" +
+ "\n" +
+ "\n}";
let solutionEntry = jsSolution;
-textarea.addEventListener('input', updateCode);
-window.addEventListener('load', updateCode);
+textarea.addEventListener("input", updateCode);
+window.addEventListener("load", updateCode);
// タブキーでテキストエリアから抜けてしまうのを防ぎ、
// 代わりにカーソル位置にタブ文字を挿入する
-textarea.onkeydown = function(e){
+textarea.onkeydown = function (e) {
if (e.keyCode === 9) {
e.preventDefault();
- insertAtCaret('\t');
+ insertAtCaret("\t");
}
if (e.keyCode === 27) {
@@ -442,8 +445,11 @@ textarea.onkeydown = function(e){
function insertAtCaret(text) {
const scrollPos = textarea.scrollTop;
const caretPos = textarea.selectionStart;
- const front = (textarea.value).substring(0, caretPos);
- const back = (textarea.value).substring(textarea.selectionEnd, textarea.value.length);
+ const front = textarea.value.substring(0, caretPos);
+ const back = textarea.value.substring(
+ textarea.selectionEnd,
+ textarea.value.length,
+ );
textarea.value = front + text + back;
caretPos = caretPos + text.length;
@@ -455,10 +461,10 @@ function insertAtCaret(text) {
// ユーザーがテキストエリアのコードを書き換える度に userCode を毎回更新する
-textarea.onkeyup = function(){
+textarea.onkeyup = function () {
// ユーザーのコードが表示されているときのみ状態を保存し、
// 答えのコードでユーザーコードが上書きされないようにする
- if(solution.value === '答えを見る') {
+ if (solution.value === "答えを見る") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
@@ -496,15 +502,14 @@ MAN: Manchester Piccadilly
出力結果
コードエディタ
-
コードエディタから抜けるには Esc キーを押して下さい(タブキーではタブ文字を挿入します)。
+
+ コードエディタから抜けるには Esc
+ キーを押して下さい(タブキーではタブ文字を挿入します)。
+
-
-
+
+
```
@@ -555,9 +560,9 @@ body {
```
```js hidden
-const textarea = document.getElementById('code');
-const reset = document.getElementById('reset');
-const solution = document.getElementById('solution');
+const textarea = document.getElementById("code");
+const reset = document.getElementById("reset");
+const solution = document.getElementById("solution");
let code = textarea.value;
let userEntry = textarea.value;
@@ -565,56 +570,57 @@ function updateCode() {
eval(textarea.value);
}
-reset.addEventListener('click', function() {
+reset.addEventListener("click", function () {
textarea.value = code;
userEntry = textarea.value;
solutionEntry = jsSolution;
- solution.value = '答えを見る';
+ solution.value = "答えを見る";
updateCode();
});
-solution.addEventListener('click', function() {
- if(solution.value === '答えを見る') {
+solution.addEventListener("click", function () {
+ if (solution.value === "答えを見る") {
textarea.value = solutionEntry;
- solution.value = '答えを隠す';
+ solution.value = "答えを隠す";
} else {
textarea.value = userEntry;
- solution.value = '答えを見る';
+ solution.value = "答えを見る";
}
updateCode();
});
-const jsSolution = 'const list = document.querySelector(\'.output ul\');' +
-'\nlist.innerHTML = \'\';' +
-'\nlet stations = [\'MAN675847583748sjt567654;Manchester Piccadilly\',' +
-'\n \'GNF576746573fhdg4737dh4;Greenfield\',' +
-'\n \'LIV5hg65hd737456236dch46dg4;Liverpool Lime Street\',' +
-'\n \'SYB4f65hf75f736463;Stalybridge\',' +
-'\n \'HUD5767ghtyfyr4536dh45dg45dg3;Huddersfield\'];' +
-'\n' +
-'\nfor (let i = 0; i < stations.length; i++) {' +
-'\n let input = stations[i];' +
-'\n let code = input.slice(0,3);' +
-'\n let semiC = input.indexOf(\';\');' +
-'\n let name = input.slice(semiC + 1);' +
-'\n let result = code + \': \' + name;' +
-'\n let listItem = document.createElement(\'li\');' +
-'\n listItem.textContent = result;' +
-'\n list.appendChild(listItem);' +
-'\n}';
+const jsSolution =
+ "const list = document.querySelector('.output ul');" +
+ "\nlist.innerHTML = '';" +
+ "\nlet stations = ['MAN675847583748sjt567654;Manchester Piccadilly'," +
+ "\n 'GNF576746573fhdg4737dh4;Greenfield'," +
+ "\n 'LIV5hg65hd737456236dch46dg4;Liverpool Lime Street'," +
+ "\n 'SYB4f65hf75f736463;Stalybridge'," +
+ "\n 'HUD5767ghtyfyr4536dh45dg45dg3;Huddersfield'];" +
+ "\n" +
+ "\nfor (let i = 0; i < stations.length; i++) {" +
+ "\n let input = stations[i];" +
+ "\n let code = input.slice(0,3);" +
+ "\n let semiC = input.indexOf(';');" +
+ "\n let name = input.slice(semiC + 1);" +
+ "\n let result = code + ': ' + name;" +
+ "\n let listItem = document.createElement('li');" +
+ "\n listItem.textContent = result;" +
+ "\n list.appendChild(listItem);" +
+ "\n}";
let solutionEntry = jsSolution;
-textarea.addEventListener('input', updateCode);
-window.addEventListener('load', updateCode);
+textarea.addEventListener("input", updateCode);
+window.addEventListener("load", updateCode);
// タブキーでテキストエリアから抜けてしまうのを防ぎ、
// 代わりにカーソル位置にタブ文字を挿入する
-textarea.onkeydown = function(e){
+textarea.onkeydown = function (e) {
if (e.keyCode === 9) {
e.preventDefault();
- insertAtCaret('\t');
+ insertAtCaret("\t");
}
if (e.keyCode === 27) {
@@ -625,8 +631,11 @@ textarea.onkeydown = function(e){
function insertAtCaret(text) {
const scrollPos = textarea.scrollTop;
const caretPos = textarea.selectionStart;
- const front = (textarea.value).substring(0, caretPos);
- const back = (textarea.value).substring(textarea.selectionEnd, textarea.value.length);
+ const front = textarea.value.substring(0, caretPos);
+ const back = textarea.value.substring(
+ textarea.selectionEnd,
+ textarea.value.length,
+ );
textarea.value = front + text + back;
caretPos = caretPos + text.length;
@@ -638,10 +647,10 @@ function insertAtCaret(text) {
// ユーザーがテキストエリアのコードを書き換える度に userCode を毎回更新する
-textarea.onkeyup = function(){
+textarea.onkeyup = function () {
// ユーザーのコードが表示されているときのみ状態を保存し、
// 答えのコードでユーザーコードが上書きされないようにする
- if(solution.value === '答えを見る') {
+ if (solution.value === "答えを見る") {
userEntry = textarea.value;
} else {
solutionEntry = textarea.value;
diff --git a/files/ja/learn/javascript/first_steps/variables/index.md b/files/ja/learn/javascript/first_steps/variables/index.md
index faab8c94f97a70..971c2ed81bc39d 100644
--- a/files/ja/learn/javascript/first_steps/variables/index.md
+++ b/files/ja/learn/javascript/first_steps/variables/index.md
@@ -43,14 +43,14 @@ l10n:
```
```js
-const buttonA = document.querySelector('#button_A');
-const headingA = document.querySelector('#heading_A');
+const buttonA = document.querySelector("#button_A");
+const headingA = document.querySelector("#heading_A");
buttonA.onclick = () => {
- const name = prompt('あなたの名前は何ですか?');
+ const name = prompt("あなたの名前は何ですか?");
alert(`こんにちは、${name}さん、はじめまして!`);
headingA.textContent = `${name}さん、ようこそ`;
-}
+};
```
{{ EmbedLiveSample('Variable_example', '100%', 120) }}
@@ -67,13 +67,15 @@ buttonA.onclick = () => {
```
```js example-bad
-const buttonB = document.querySelector('#button_B');
-const headingB = document.querySelector('#heading_B');
+const buttonB = document.querySelector("#button_B");
+const headingB = document.querySelector("#heading_B");
buttonB.onclick = () => {
- alert(`こんにちは、${prompt('あなたの名前は何ですか?')}さん、はじめまして!`);
- headingB.textContent = `${prompt('あなたの名前は何ですか?')}さん、ようこそ`;
-}
+ alert(
+ `こんにちは、${prompt("あなたの名前は何ですか?")}さん、はじめまして!`,
+ );
+ headingB.textContent = `${prompt("あなたの名前は何ですか?")}さん、ようこそ`;
+};
```
{{ EmbedLiveSample('Without_a_variable', '100%', 120) }}
@@ -121,7 +123,7 @@ scoobyDoo;
変数を宣言したら、値を入れて初期化できます。初期化するには、変数名に続けて等号記号 (`=`) を入力し、変数に入れたい値を渡します。例えば次のように。
```js
-myName = 'Chris';
+myName = "Chris";
myAge = 37;
```
@@ -135,7 +137,7 @@ myAge;
変数の宣言と初期化を一度にすることもできます。
```js
-let myDog = 'Rover';
+let myDog = "Rover";
```
2 つの操作を別個の行で行うより早いので、おそらくほとんどの場合、この方法で書くでしょう。
@@ -156,7 +158,7 @@ JavaScript が最初に作成されたときには、これが変数を宣言す
はじめに、変数を宣言して初期化する複数行の JavaScript プログラムを作成した場合、変数を初期化した後で実際に変数を `var` で宣言することができます。例えば次のようになります。
```js
-myName = 'Chris';
+myName = "Chris";
function logName() {
console.log(myName);
@@ -176,22 +178,22 @@ var myName;
第二に、`var` を使用するとき、好きなだけ同じ変数を何度でも宣言することができます、しかし `let` ではできません。次の例は動作します。
```js
-var myName = 'Chris';
-var myName = 'Bob';
+var myName = "Chris";
+var myName = "Bob";
```
しかし、次のようにすると 2 行目でエラーが発生します。
```js example-bad
-let myName = 'Chris';
-let myName = 'Bob';
+let myName = "Chris";
+let myName = "Bob";
```
代わりにこれをしなければならないでしょう。
```js
-let myName = 'Chris';
-myName = 'Bob';
+let myName = "Chris";
+myName = "Bob";
```
繰り返しますが、これは言語の賢明な決定です。変数を再宣言する必要はありません。それは物事をより混乱させるだけです。
@@ -215,7 +217,7 @@ myName = 'Bob';
変数を初期化して値が入ったら、もう一度値を入れなおすことで、変数の値を変更することができます。次の行を入力してみてください。
```js
-myName = 'Bob';
+myName = "Bob";
myAge = 40;
```
@@ -280,7 +282,7 @@ let myAge = 17;
文字列とは文字が連なったもののことです。変数に文字列値を設定する場合、単一引用符 (`'`) または二重引用符 (`"`) で文字を囲みます。囲み忘れると、JavaScript はその文字を変数名として解釈しようとしてしまいます。
```js
-let dolphinGoodbye = 'So long and thanks for all the fish';
+let dolphinGoodbye = "So long and thanks for all the fish";
```
### 論理値
@@ -304,7 +306,7 @@ let test = 6 < 3;
配列とは角括弧 (`[]`) にカンマで区切った複数の値を格納できるオブジェクトです。コンソールに以下のように入力してみましょう。
```js
-let myNameArray = ['Chris', 'Bob', 'Jim'];
+let myNameArray = ["Chris", "Bob", "Jim"];
let myNumberArray = [10, 15, 40];
```
@@ -326,13 +328,13 @@ myNumberArray[2]; // 40 と表示されます
次の行をコンソールに入力してみましょう。
```js
-let dog = { name : 'ポチ', breed : 'ダルメシアン' };
+let dog = { name: "ポチ", breed: "ダルメシアン" };
```
オブジェクトに格納された情報を取得するには、以下のような書き方をします。
```js
-dog.name
+dog.name;
```
とりあえずオブジェクトについて、今はここまでです。オブジェクトについてはもっと先のモジュールで紹介します。
@@ -344,13 +346,13 @@ JavaScript は他の言語と異なり、「動的型付け言語」という、
たとえば、もし変数を宣言して、引用符で囲んだ値を渡すとします。すると、ブラウザーはこれを文字列として扱うでしょう。
```js
-let myString = 'Hello';
+let myString = "Hello";
```
それが数字を含んでいたとしても、文字列になってしまうので、気を付けてください。
```js
-let myNumber = '500'; // oops, this is still a string
+let myNumber = "500"; // oops, this is still a string
typeof myNumber;
myNumber = 500; // much better — now this is a number
typeof myNumber;
@@ -394,15 +396,15 @@ count = 2;
JavaScript で定数は、常に同じ値に名前を付けなければなりませんが、名前を付けた値の内容は変更することができることに注意してください。これは、数値や論理値のような単純な型では有益な違いではありませんが、オブジェクトを考えてみてください。
```js
-const bird = { species : 'Kestrel'};
-console.log(bird.species); // "Kestrel"
+const bird = { species: "Kestrel" };
+console.log(bird.species); // "Kestrel"
```
オブジェクトの内容が変わっても、定数は同じオブジェクトを指しているので、`const` を使って宣言したオブジェクトのプロパティを更新したり、追加したり、削除したりすることができます。
```js
-bird.species = 'Striated Caracara';
-console.log(bird.species); // "Striated Caracara"
+bird.species = "Striated Caracara";
+console.log(bird.species); // "Striated Caracara"
```
## いつ const を使い、いつ let を使うか
diff --git a/files/ja/learn/javascript/first_steps/what_is_javascript/index.md b/files/ja/learn/javascript/first_steps/what_is_javascript/index.md
index 36407e82c40527..60f4f4de36abfb 100644
--- a/files/ja/learn/javascript/first_steps/what_is_javascript/index.md
+++ b/files/ja/learn/javascript/first_steps/what_is_javascript/index.md
@@ -47,14 +47,14 @@ JavaScript はウェブページにて複雑な機能をできるようにする
```css
p {
- font-family: 'helvetica neue', helvetica, sans-serif;
+ font-family: "helvetica neue", helvetica, sans-serif;
letter-spacing: 1px;
text-transform: uppercase;
text-align: center;
- border: 2px solid rgba(0,0,200,0.6);
- background: rgba(0,0,200,0.3);
- color: rgba(0,0,200,0.6);
- box-shadow: 1px 1px 2px rgba(0,0,200,0.4);
+ border: 2px solid rgba(0, 0, 200, 0.6);
+ background: rgba(0, 0, 200, 0.3);
+ color: rgba(0, 0, 200, 0.6);
+ box-shadow: 1px 1px 2px rgba(0, 0, 200, 0.4);
border-radius: 10px;
padding: 3px 10px;
display: inline-block;
@@ -67,12 +67,12 @@ p {
最後に、JavaScript を加えて動的なふるまいを実装します:
```js
-const para = document.querySelector('p');
+const para = document.querySelector("p");
-para.addEventListener('click', updateName);
+para.addEventListener("click", updateName);
function updateName() {
- const name = prompt('名前を入力して下さい');
+ const name = prompt("名前を入力して下さい");
para.textContent = `Player 1: ${name}`;
}
```
@@ -147,12 +147,12 @@ JavaScript のごく一般的な用途は、(先ほど例示した) Document Obj
例えば、最初の例で見た JavaScript のブロックに戻りましょう。
```js
-const para = document.querySelector('p');
+const para = document.querySelector("p");
-para.addEventListener('click', updateName);
+para.addEventListener("click", updateName);
function updateName() {
- const name = prompt('名前を入力して下さい');
+ const name = prompt("名前を入力して下さい");
para.textContent = `Player 1: ${name}`;
}
```
@@ -203,26 +203,24 @@ JavaScript は CSS と同じような方法で、HTML ページに適用する
```html
```
4. それでは {{htmlelement("script")}} 要素内に JavaScript を書いて、もうちょっと面白いことをしてみましょう。「// JavaScript をここに書きます」と書いてあるすぐ下に、以下のコードを追加してください。
```js
- document.addEventListener('DOMContentLoaded', () => {
+ document.addEventListener("DOMContentLoaded", () => {
function createParagraph() {
- const para = document.createElement('p');
- para.textContent = 'ボタンが押されました!';
+ const para = document.createElement("p");
+ para.textContent = "ボタンが押されました!";
document.body.appendChild(para);
}
- const buttons = document.querySelectorAll('button');
+ const buttons = document.querySelectorAll("button");
for (const button of buttons) {
- button.addEventListener('click', createParagraph);
+ button.addEventListener("click", createParagraph);
}
});
```
@@ -251,15 +249,15 @@ JavaScript は CSS と同じような方法で、HTML ページに適用する
```js
function createParagraph() {
- const para = document.createElement('p');
- para.textContent = 'ボタンが押されました!';
+ const para = document.createElement("p");
+ para.textContent = "ボタンが押されました!";
document.body.appendChild(para);
}
- const buttons = document.querySelectorAll('button');
+ const buttons = document.querySelectorAll("button");
for (const button of buttons) {
- button.addEventListener('click', createParagraph);
+ button.addEventListener("click", createParagraph);
}
```
@@ -277,8 +275,8 @@ JavaScript は CSS と同じような方法で、HTML ページに適用する
```js example-bad
function createParagraph() {
- const para = document.createElement('p');
- para.textContent = 'ボタンが押されました!';
+ const para = document.createElement("p");
+ para.textContent = "ボタンが押されました!";
document.body.appendChild(para);
}
```
@@ -303,10 +301,10 @@ HTML に JavaScript を含めるのではなく、純粋な JavaScript の構成
このためのコードを以下に示します。
```js
-const buttons = document.querySelectorAll('button');
+const buttons = document.querySelectorAll("button");
for (const button of buttons) {
- button.addEventListener('click', createParagraph);
+ button.addEventListener("click", createParagraph);
}
```
@@ -329,7 +327,7 @@ JavaScript を使用してページ上の要素(またはより正確には、
内部の例では、コードの周りにこの構造を見ることができます。
```js
-document.addEventListener('DOMContentLoaded', () => {
+document.addEventListener("DOMContentLoaded", () => {
// …
});
```
@@ -432,8 +430,8 @@ HTML や CSS と同様に、 JavaScript でもコード内にブラウザーが
// 関数: HTML の body タグ内の一番下に新しい段落を追加します。
function createParagraph() {
- let para = document.createElement('p');
- para.textContent = 'ボタンが押されました!';
+ let para = document.createElement("p");
+ para.textContent = "ボタンが押されました!";
document.body.appendChild(para);
}
@@ -444,10 +442,10 @@ function createParagraph() {
どのボタンが押されても、 createParagraph() 関数が実行されるようにする。
*/
-const buttons = document.querySelectorAll('button');
+const buttons = document.querySelectorAll("button");
for (const button of buttons) {
- button.addEventListener('click', createParagraph);
+ button.addEventListener("click", createParagraph);
}
```
diff --git a/files/ja/learn/javascript/first_steps/what_went_wrong/index.md b/files/ja/learn/javascript/first_steps/what_went_wrong/index.md
index 1d8aa41aee5899..fbe580f8676e9d 100644
--- a/files/ja/learn/javascript/first_steps/what_went_wrong/index.md
+++ b/files/ja/learn/javascript/first_steps/what_went_wrong/index.md
@@ -38,17 +38,17 @@ slug: Learn/JavaScript/First_steps/What_went_wrong
1. `number-game-errors.html` ファイルを開いているタブを選択して、JavaScript コンソールを開いてください。以下のメッセージが表示されていますね。![](not-a-function.png)
2. これは分かりやすいエラーです。ブラウザーからもいくつか情報が出ています (上のスクリーンショットは FireFox のものですが、他のブラウザーでも同様の情報が表示されるでしょう)。左から順に説明します。
- - 赤色の 「x」 ボタンはエラーがあることを示しています。
- - 「TypeError: guessSubmit.addeventListener is not a function」というエラーメッセージが、何が問題かを示しています。
- - 「Learn More」 のリンクがエラー内容についてもっと詳細に説明する MDN のページを指しています。
- - JavaScript のファイルの名前が出ています。このリンクをクリックすると、開発者ツールのデバッガータブで問題のあるファイルが開きます。ハイライトされているエラーの箇所が見えるでしょう。
- - エラーがある行の行番号と、最初の文字が始まる番号が出ています。上の例では 86 行目の 3 文字目です。
+ - 赤色の 「x」 ボタンはエラーがあることを示しています。
+ - 「TypeError: guessSubmit.addeventListener is not a function」というエラーメッセージが、何が問題かを示しています。
+ - 「Learn More」 のリンクがエラー内容についてもっと詳細に説明する MDN のページを指しています。
+ - JavaScript のファイルの名前が出ています。このリンクをクリックすると、開発者ツールのデバッガータブで問題のあるファイルが開きます。ハイライトされているエラーの箇所が見えるでしょう。
+ - エラーがある行の行番号と、最初の文字が始まる番号が出ています。上の例では 86 行目の 3 文字目です。
3. テキストエディターで 86 行目を見てみましょう。
- ```js
- guessSubmit.addeventListener('click', checkGuess);
- ```
+ ```js
+ guessSubmit.addeventListener("click", checkGuess);
+ ```
4. エラーでは、"guessSubmit.addeventListener is not a function" とあり、これは JavaScript インタープリターに呼び出している関数が認識されないという意味です。しばしば、このエラーメッセージは、スペルミスをしたということです。もし正しい綴りがわからなければ、MDN のサイトで使用している機能を調べてみてください。きっと見つかります。いつもはお好みの検索エンジンで「mdn _機能の名前_」と検索してみるのがよいでしょう。今回は代わりに [`addEventListener()`](/ja/docs/Web/API/EventTarget/addEventListener) のリンクを張っておきます。
5. ページによると、関数の名前を間違えたみたいですね!JavaScript は大文字・小文字を区別しますので、ちょっとでも違うとエラーの原因になることを覚えておきましょう。それでは `addeventListener` を `addEventListener` に修正してエラーを直しましょう。
@@ -61,36 +61,36 @@ slug: Learn/JavaScript/First_steps/What_went_wrong
2. 予想を入力して、予想を入力ボタンを押してみると、...別のエラーが起きています!![](variable-is-null.png)
3. 今回のエラーを見ると、 78 行目で"TypeError: lowOrHi is null"が起きています。
- > **メモ:** [`Null`](/ja/docs/Glossary/Null) は「何もない」ことや「値がない」ことを表す特別な値です。つまり `lowOrHi` が宣言されて初期化されているけれど、意味のある値ではない — つまり型も値もないということです。
+ > **メモ:** [`Null`](/ja/docs/Glossary/Null) は「何もない」ことや「値がない」ことを表す特別な値です。つまり `lowOrHi` が宣言されて初期化されているけれど、意味のある値ではない — つまり型も値もないということです。
- > **メモ:** このエラーは関数内部 (`checkGuess() { ... }` ブロックの中) で発生したため、ページを読み込んだだけでは出てきませんでした。後に続く[関数の記事](/ja/docs/Learn/JavaScript/Building_blocks/Functions)を読み進めていけば分かりますが、内側の関数のスコープは外側の関数のスコープとは異なります。今回のケースでは、 86 行目の `checkGuess()` 関数が実行されるまで実行されず、エラーも発生していませんでした。
+ > **メモ:** このエラーは関数内部 (`checkGuess() { ... }` ブロックの中) で発生したため、ページを読み込んだだけでは出てきませんでした。後に続く[関数の記事](/ja/docs/Learn/JavaScript/Building_blocks/Functions)を読み進めていけば分かりますが、内側の関数のスコープは外側の関数のスコープとは異なります。今回のケースでは、 86 行目の `checkGuess()` 関数が実行されるまで実行されず、エラーも発生していませんでした。
4. 78 行目を見てください。以下のコードが書かれています。
- ```js
- lowOrHi.textContent = '今の予想は大きすぎです!';
- ```
+ ```js
+ lowOrHi.textContent = "今の予想は大きすぎです!";
+ ```
5. この行は `lowOrHi` 定数の `textContent` プロパティに文字列を設定しようとしていますが、`lowOrHi` 定数に適切な値が設定されていないため上手く動きません。`lowOrHi` が使用されている箇所をコードのほかの部分から探してみましょう。最初に見つかるのは 48 行目でしょう。
- ```js
- const lowOrHi = document.querySelector('lowOrHi');
- ```
+ ```js
+ const lowOrHi = document.querySelector("lowOrHi");
+ ```
6. ここでは、HTML の要素を参照する変数を作ろうとしています。この行の後ろで、値が `null` になっているか確認するため以下のコードを直後の 49 行目に追加します。
- ```js
- console.log(lowOrHi);
- ```
+ ```js
+ console.log(lowOrHi);
+ ```
- > **メモ:** [`console.log()`](/ja/docs/Web/API/Console/log) は値をコンソールに出力する、デバッグするときにとても便利な関数です。これで 48 行目で `lowOrHi` にセットしたはずの値がコンソールに出力されるでしょう。
+ > **メモ:** [`console.log()`](/ja/docs/Web/API/Console/log) は値をコンソールに出力する、デバッグするときにとても便利な関数です。これで 48 行目で `lowOrHi` にセットしたはずの値がコンソールに出力されるでしょう。
7. ファイルを保存して再度ブラウザーで読み込みます。そして `console.log()` の結果をコンソールで見てみましょう。 ![](console-log-output.png)わかりましたね。`lowOrHi` の値は `null` でした。これで問題が 48 行目にあることがわかりました。
8. それでは何が問題となり得るか考えてみましょう。 48 行目では要素への参照を CSS セレクターを使用して取得する [`document.querySelector()`](/ja/docs/Web/API/Document/querySelector) メソッドが使用されています。ファイルの少し上のほうにある、問題となる{{htmlelement("p")}} 要素を見てみましょう。
- ```js
-
- ```
+ ```js
+
+ ```
9. ここではクラスセレクターが必要です。クラスセレクターはドット (`.`) で始まりますが、 48 行目で `querySelector()` メソッドに渡された文字列にはドットがありません。これが問題でしょう! 48 行目の `lowOrHi` を `.lowOrHi` に変更してみてください。
10. ファイルを保存して再度読み込むと、`console.log()` の文は求めていた `
` 要素を表示しています。何とか次のエラーを潰すことができました!`console.log()` の行は削除してもいいですし、後で使うために残しておいても大丈夫です。
@@ -111,21 +111,21 @@ slug: Learn/JavaScript/First_steps/What_went_wrong
1. `randomNumber` 変数にランダムな数値が最初にセットされる場所を検索してみましょう。ゲームの開始で推測するランダムな数字を保存しようとしているのは 44 行目のあたりです。
- ```js
- let randomNumber = Math.floor(Math.random()) + 1;
- ```
+ ```js
+ let randomNumber = Math.floor(Math.random()) + 1;
+ ```
2. そして、それぞれのゲームの合間に次のランダムな数字を設定しているのは 113 行目のあたりです。
- ```js
- randomNumber = Math.floor(Math.random()) + 1;
- ```
+ ```js
+ randomNumber = Math.floor(Math.random()) + 1;
+ ```
3. これらの行が問題となるかを確認するため、`console.log()` にもう一度登場してもらいましょう。先ほどのそれぞれの行の直下に以下のコードを追加します。
- ```js
- console.log(randomNumber);
- ```
+ ```js
+ console.log(randomNumber);
+ ```
4. 保存して再度読み込んで、何度かプレイしてみましょう。コンソールに出力される `randomNumber` の値が常に 1 であることに気づきます。
@@ -134,25 +134,25 @@ slug: Learn/JavaScript/First_steps/What_went_wrong
これを直すには、この行が何をしているのか考えなければなりません。まず [`Math.random()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/random) を呼んでいます。これは 0 から 1 までのランダムな実数値を生成します。例えば 0.5675493843 などです。
```js
-Math.random()
+Math.random();
```
次に `Math.random()` の実行結果を [`Math.floor()`](/ja/docs/Web/JavaScript/Reference/Global_Objects/Math/floor) に渡して、一番近い整数に切り捨てています。そしてその結果に 1 を加えます。
```js
-Math.floor(Math.random()) + 1
+Math.floor(Math.random()) + 1;
```
0 から 1 のランダムな実数を切り捨てると、結果は常に 0 となり、それに 1 を加えることで常に 1 となります。ランダムな数を切り捨てる前に 100 を乗算しなければなりません。次のコードは 0 から 99 を返すでしょう。
```js
-Math.floor(Math.random()*100);
+Math.floor(Math.random() * 100);
```
さらに 1 を加えることで、1 から 100 のランダムな数字を返してくれるようになります。
```js
-Math.floor(Math.random()*100) + 1;
+Math.floor(Math.random() * 100) + 1;
```
先ほどの 2 行をそれぞれ修正してください。保存して再度読み込むと、思い通りに動くようになっているでしょう!
diff --git a/files/ja/learn/javascript/howto/index.md b/files/ja/learn/javascript/howto/index.md
index ac6bd189ab9d02..115512b7b5a150 100644
--- a/files/ja/learn/javascript/howto/index.md
+++ b/files/ja/learn/javascript/howto/index.md
@@ -42,8 +42,8 @@ JavaScript のコードが正しく動作しないので修正したい、とい
```js
function myFunction() {
- alert('This is my function.');
-};
+ alert("This is my function.");
+}
```
上記のコードで定義した関数は、例えば以下のように呼び出さないかぎり何もしません。
@@ -78,9 +78,9 @@ var myNumber = 0;
```js
var myObject = {
- name : 'Chris',
- age : 38
-}
+ name: "Chris",
+ age: 38,
+};
```
## 基本的な定義
diff --git a/files/ja/learn/javascript/objects/basics/index.md b/files/ja/learn/javascript/objects/basics/index.md
index ea4977f1d6e82b..5c3b63ebae099e 100644
--- a/files/ja/learn/javascript/objects/basics/index.md
+++ b/files/ja/learn/javascript/objects/basics/index.md
@@ -170,8 +170,8 @@ name.last;
次のように[ドット記法](#ドット記法)を使用する代わりに、
```js
-person.age
-person.name.first
+person.age;
+person.name.first;
```
角括弧を使用して次のようにすることができます。
diff --git a/files/ja/learn/javascript/objects/classes_in_javascript/index.md b/files/ja/learn/javascript/objects/classes_in_javascript/index.md
index 01f1e265b9995a..609db66cac03ef 100644
--- a/files/ja/learn/javascript/objects/classes_in_javascript/index.md
+++ b/files/ja/learn/javascript/objects/classes_in_javascript/index.md
@@ -40,7 +40,6 @@ l10n:
```js
class Person {
-
name;
constructor(name) {
@@ -50,7 +49,6 @@ class Person {
introduceSelf() {
console.log(`Hi! I'm ${this.name}`);
}
-
}
```
@@ -74,7 +72,7 @@ class Person {
上記のクラス宣言コードを指定された場合、次のように新しい `Person` インスタンスを作成して使用することができます。
```js
-const giles = new Person('Giles');
+const giles = new Person("Giles");
giles.introduceSelf(); // Hi! I'm Giles
```
@@ -87,11 +85,9 @@ giles.introduceSelf(); // Hi! I'm Giles
```js
class Animal {
-
sleep() {
- console.log('zzzzzzz');
+ console.log("zzzzzzz");
}
-
}
const spot = new Animal();
@@ -105,7 +101,6 @@ spot.sleep(); // 'zzzzzzz'
```js
class Professor extends Person {
-
teaches;
constructor(name, teaches) {
@@ -114,14 +109,15 @@ class Professor extends Person {
}
introduceSelf() {
- console.log(`My name is ${this.name}, and I will be your ${this.teaches} professor.`);
+ console.log(
+ `My name is ${this.name}, and I will be your ${this.teaches} professor.`,
+ );
}
grade(paper) {
const grade = Math.floor(Math.random() * (5 - 1) + 1);
console.log(grade);
}
-
}
```
@@ -138,10 +134,10 @@ class Professor extends Person {
この宣言により、これで教授を作成し、使用することができるようになりました。
```js
-const walsh = new Professor('Walsh', 'Psychology');
-walsh.introduceSelf(); // 'My name is Walsh, and I will be your Psychology professor'
+const walsh = new Professor("Walsh", "Psychology");
+walsh.introduceSelf(); // 'My name is Walsh, and I will be your Psychology professor'
-walsh.grade('my paper'); // some random grade
+walsh.grade("my paper"); // some random grade
```
## カプセル化
@@ -152,7 +148,6 @@ walsh.grade('my paper'); // some random grade
```js
class Student extends Person {
-
#year;
constructor(name, year) {
@@ -160,7 +155,6 @@ class Student extends Person {
this.#year = year;
}
-
introduceSelf() {
console.log(`Hi! I'm ${this.name}, and I'm in year ${this.#year}.`);
}
@@ -168,14 +162,13 @@ class Student extends Person {
canStudyArchery() {
return this.#year > 1;
}
-
}
```
このクラス宣言では、`#year` は [プライベートデータプロパティ](/ja/docs/Web/JavaScript/Reference/Classes/Private_class_fields)です。`Student` オブジェクトを作成し、内部で `#year` を使用することができますが、オブジェクトの外のコードが `#year` にアクセスしようとすると、ブラウザはエラーを報告します。
```js
-const summers = new Student('Summers', 2);
+const summers = new Student("Summers", 2);
summers.introduceSelf(); // Hi! I'm Summers, and I'm in year 2.
summers.canStudyArchery(); // true
@@ -196,7 +189,7 @@ class Example {
}
#somePrivateMethod() {
- console.log('You called me?');
+ console.log("You called me?");
}
}
diff --git a/files/ja/learn/javascript/objects/json/index.md b/files/ja/learn/javascript/objects/json/index.md
index a279c401b39d11..bda55eabf301d4 100644
--- a/files/ja/learn/javascript/objects/json/index.md
+++ b/files/ja/learn/javascript/objects/json/index.md
@@ -82,14 +82,14 @@ JSON 文字列はそれ自身をファイルとして格納することもでき
この文字列を JavaScript プログラムへ読み込むと(例えば、変数 `superHeroes` へ代入すると)と、 [JavaScript オブジェクトの基本](/ja/docs/Learn/JavaScript/Objects/Basics)の記事で見たのと同様に、ドットや角括弧を使ってデータへアクセスすることができます。例えば次のようになります。
```js
-superHeroes.homeTown
-superHeroes['active']
+superHeroes.homeTown;
+superHeroes["active"];
```
さらに深い階層のデータへアクセスする場合は、単純にプロパティ名や配列のインデックスを連結します。例えば、メンバーリスト中 2 番目のヒーローの 3 番目の能力を参照する場合は、以下のようにします。
```js
-superHeroes['members'][1]['powers'][2]
+superHeroes["members"][1]["powers"][2];
```
1. まず、変数名 `superHeroes` を指定します。
@@ -144,17 +144,11 @@ superHeroes['members'][1]['powers'][2]
まず、 [heroes.html](https://github.com/mdn/learning-area/blob/main/javascript/oojs/json/heroes.html) と [style.css](https://github.com/mdn/learning-area/blob/main/javascript/oojs/json/style.css) のコピーをローカルに作成してください。後者は例題ページをスタイリングするための CSS であり、前者は簡単な HTML です。加えて、{{HTMLElement("script")}} 要素で、この演習で書くJavaScriptコードを格納します。
```html
-
+
-
-
-
+
```
JSON データは GitHub の で利用できます。
@@ -169,8 +163,8 @@ JSON データは GitHub の