<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E3%82%A2%E3%83%AD%E3%83%BC%E9%96%A2%E6%95%B0</id>
	<title>JavaScriptの基礎 - アロー関数 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://mochiu.net/index.php?action=history&amp;feed=atom&amp;title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E3%82%A2%E3%83%AD%E3%83%BC%E9%96%A2%E6%95%B0"/>
	<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E3%82%A2%E3%83%AD%E3%83%BC%E9%96%A2%E6%95%B0&amp;action=history"/>
	<updated>2026-04-25T20:48:38Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://mochiu.net/index.php?title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E3%82%A2%E3%83%AD%E3%83%BC%E9%96%A2%E6%95%B0&amp;diff=14340&amp;oldid=prev</id>
		<title>Wiki: ページの作成:「== 概要 == アロー関数 (Arrow Function) は、ES2015 (ES6)で導入された関数定義の新しい構文である。&lt;br&gt; &lt;code&gt;=&gt;&lt;/code&gt; 記号を使った簡潔な記法により、従来の &lt;code&gt;function&lt;/code&gt; キーワードによる関数式をより短く記述できる。&lt;br&gt; &lt;br&gt; アロー関数の最大の特徴は、自身の &lt;code&gt;this&lt;/code&gt; を持たない点である。&lt;br&gt; 通常の関数は呼び出し方によって &lt;code&gt;this&lt;/code&gt; の値…」</title>
		<link rel="alternate" type="text/html" href="https://mochiu.net/index.php?title=JavaScript%E3%81%AE%E5%9F%BA%E7%A4%8E_-_%E3%82%A2%E3%83%AD%E3%83%BC%E9%96%A2%E6%95%B0&amp;diff=14340&amp;oldid=prev"/>
		<updated>2026-02-18T19:47:11Z</updated>

		<summary type="html">&lt;p&gt;ページの作成:「== 概要 == アロー関数 (Arrow Function) は、ES2015 (ES6)で導入された関数定義の新しい構文である。&amp;lt;br&amp;gt; &amp;lt;code&amp;gt;=&amp;gt;&amp;lt;/code&amp;gt; 記号を使った簡潔な記法により、従来の &amp;lt;code&amp;gt;function&amp;lt;/code&amp;gt; キーワードによる関数式をより短く記述できる。&amp;lt;br&amp;gt; &amp;lt;br&amp;gt; アロー関数の最大の特徴は、自身の &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; を持たない点である。&amp;lt;br&amp;gt; 通常の関数は呼び出し方によって &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; の値…」&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 概要 ==&lt;br /&gt;
アロー関数 (Arrow Function) は、ES2015 (ES6)で導入された関数定義の新しい構文である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;=&amp;gt;&amp;lt;/code&amp;gt; 記号を使った簡潔な記法により、従来の &amp;lt;code&amp;gt;function&amp;lt;/code&amp;gt; キーワードによる関数式をより短く記述できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
アロー関数の最大の特徴は、自身の &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; を持たない点である。&amp;lt;br&amp;gt;&lt;br /&gt;
通常の関数は呼び出し方によって &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; の値が変化するが、アロー関数は定義された場所 (レキシカルスコープ) の &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; を継承する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
この特性により、コールバック関数内で &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; が予期せず変わるという従来の問題を自然に解決できる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
また、単一の式を返す場合は中括弧とreturnキーワードを省略できる &amp;lt;code&amp;gt;暗黙return&amp;lt;/code&amp;gt; (implicit return) の機能も持つ。&amp;lt;br&amp;gt;&lt;br /&gt;
これにより、&amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; 等の配列メソッドと組み合わせた時に簡潔なコードを記述することができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
一方で、アロー関数は全ての場面で通常の関数の代替として使えるわけではない。&amp;lt;br&amp;gt;&lt;br /&gt;
オブジェクトメソッドの定義、コンストラクタとしての使用、&amp;lt;code&amp;gt;arguments&amp;lt;/code&amp;gt; オブジェクトの参照が必要な場面ではアロー関数を使用できない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ReactをはじめとするモダンなJavaScriptフレームワークでは、コンポーネント定義、イベントハンドラ、配列メソッドとの組み合わせにおいてアロー関数が最頻出の関数定義形式となっている。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;アロー関数の構文、制約、通常関数との使い分けを正確に理解することは、現代的なJavaScript開発において必須の知識である。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 基本構文 ==&lt;br /&gt;
==== 基本的な記法 ====&lt;br /&gt;
アロー関数の基本的な構文はブロック構文であり、通常の関数式に相当する。&amp;lt;br&amp;gt;&lt;br /&gt;
中括弧内に処理を記述し、値を返す場合は明示的にreturnを記述する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 基本的なブロック構文&lt;br /&gt;
 (&amp;lt;引数1&amp;gt;, &amp;lt;引数2&amp;gt;) =&amp;gt; {&lt;br /&gt;
    // 処理&lt;br /&gt;
    return &amp;lt;戻り値&amp;gt;;&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
通常の関数式とアロー関数の対比を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 通常の関数式&lt;br /&gt;
 const add = function(a, b) {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 // アロー関数 (ブロック構文)&lt;br /&gt;
 const addArrow = (a, b) =&amp;gt; {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 console.log(add(3, 5));       // 8&lt;br /&gt;
 console.log(addArrow(3, 5));  // 8&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
複数の処理が必要な場合は、ブロック構文を使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 const greet = (name) =&amp;gt; {&lt;br /&gt;
    const message = &amp;quot;こんにちは、&amp;quot; + name + &amp;quot;さん&amp;quot;;&lt;br /&gt;
    console.log(message);&lt;br /&gt;
    return message;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 greet(&amp;quot;Alice&amp;quot;);  // &amp;quot;こんにちは、Aliceさん&amp;quot;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 引数の省略記法 ====&lt;br /&gt;
アロー関数では、引数の数に応じて括弧を省略できる場合がある。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
引数が1つの場合、括弧を省略することができる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 引数が1つ: () を省略可能&lt;br /&gt;
 const double = x =&amp;gt; {&lt;br /&gt;
    return x * 2;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 // 括弧あり (どちらでも動作する)&lt;br /&gt;
 const doubleWithParens = (x) =&amp;gt; {&lt;br /&gt;
    return x * 2;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 console.log(double(5));           // 10&lt;br /&gt;
 console.log(doubleWithParens(5)); // 10&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
引数が0個の場合、括弧は省略できず必須である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 引数が0個: () は必須&lt;br /&gt;
 const sayHello = () =&amp;gt; {&lt;br /&gt;
    return &amp;quot;Hello!&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 console.log(sayHello()); // &amp;quot;Hello!&amp;quot;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
引数が複数の場合、括弧は必須である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 引数が複数: () は必須&lt;br /&gt;
 const multiply = (a, b) =&amp;gt; {&lt;br /&gt;
    return a * b;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 const sum3 = (a, b, c) =&amp;gt; {&lt;br /&gt;
    return a + b + c;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 console.log(multiply(4, 5));    // 20&lt;br /&gt;
 console.log(sum3(1, 2, 3));     // 6&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 省略記法 ==&lt;br /&gt;
==== 単一式の暗黙return ====&lt;br /&gt;
アロー関数では、関数本体が単一の式である場合に中括弧とreturnキーワードを省略できる。&amp;lt;br&amp;gt;&lt;br /&gt;
式の評価結果が自動的に戻り値となる。&amp;lt;br&amp;gt;&lt;br /&gt;
これを、&amp;lt;code&amp;gt;暗黙return&amp;lt;/code&amp;gt; (implicit return) と呼ぶ。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // ブロック構文 (明示的 return)&lt;br /&gt;
 const add = (a, b) =&amp;gt; {&lt;br /&gt;
    return a + b;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 // 式本体 (暗黙 return)&lt;br /&gt;
 const addShort = (a, b) =&amp;gt; a + b;&lt;br /&gt;
 &lt;br /&gt;
 console.log(add(3, 4));      // 7&lt;br /&gt;
 console.log(addShort(3, 4)); // 7&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;暗黙return&amp;lt;/code&amp;gt; が使えるのは式のみであり、&amp;lt;code&amp;gt;if&amp;lt;/code&amp;gt; 文や &amp;lt;code&amp;gt;for&amp;lt;/code&amp;gt; 文等の文は使用できない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 式: 暗黙returnが使用できる&lt;br /&gt;
 const isEven = n =&amp;gt; n % 2 === 0;&lt;br /&gt;
 const getName = user =&amp;gt; user.name;&lt;br /&gt;
 &lt;br /&gt;
 console.log(isEven(4));  // true&lt;br /&gt;
 console.log(isEven(3));  // false&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
配列の &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt; や &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; との組み合わせで、&amp;lt;code&amp;gt;暗黙return&amp;lt;/code&amp;gt; の効果が際立つ。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 const numbers = [1, 2, 3, 4, 5];&lt;br /&gt;
 &lt;br /&gt;
 // 通常の関数式&lt;br /&gt;
 const doubled1 = numbers.map(function(n) {&lt;br /&gt;
    return n * 2;&lt;br /&gt;
 });&lt;br /&gt;
 &lt;br /&gt;
 // アロー関数 (暗黙 return)&lt;br /&gt;
 const doubled2 = numbers.map(n =&amp;gt; n * 2);&lt;br /&gt;
 &lt;br /&gt;
 // filter との組み合わせ&lt;br /&gt;
 const evens = numbers.filter(n =&amp;gt; n % 2 === 0);&lt;br /&gt;
 &lt;br /&gt;
 console.log(doubled2);  // [2, 4, 6, 8, 10]&lt;br /&gt;
 console.log(evens);     // [2, 4]&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== オブジェクトリテラルの返却 ====&lt;br /&gt;
アロー関数で &amp;lt;code&amp;gt;暗黙return&amp;lt;/code&amp;gt; を使用してオブジェクトリテラルを返す場合は、括弧で囲む必要がある。&amp;lt;br&amp;gt;&lt;br /&gt;
中括弧 &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; はブロックとして解釈されるため、そのまま記述するとエラーとなる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 正しい書き方: () で囲んでオブジェクトリテラルとして扱う&lt;br /&gt;
 const getUser2 = (name, age) =&amp;gt; ({ name: name, age: age });&lt;br /&gt;
 &lt;br /&gt;
 // 誤った書き方: {} がブロックと解釈され、undefined が返る&lt;br /&gt;
 const getUser1 = (name, age) =&amp;gt; { name: name, age: age };&lt;br /&gt;
 // SyntaxError または undefined&lt;br /&gt;
&lt;br /&gt;
 // プロパティ短縮記法との組み合わせ&lt;br /&gt;
 const getUser3 = (name, age) =&amp;gt; ({ name, age });&lt;br /&gt;
 &lt;br /&gt;
 console.log(getUser2(&amp;quot;Alice&amp;quot;, 30));  // { name: &amp;quot;Alice&amp;quot;, age: 30 }&lt;br /&gt;
 console.log(getUser3(&amp;quot;Bob&amp;quot;, 25));    // { name: &amp;quot;Bob&amp;quot;, age: 25 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
配列メソッドでオブジェクトを返す時の例を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 const users = [&amp;quot;Alice&amp;quot;, &amp;quot;Bob&amp;quot;, &amp;quot;Charlie&amp;quot;];&lt;br /&gt;
 &lt;br /&gt;
 // 正: () で囲む&lt;br /&gt;
 const result2 = users.map(name =&amp;gt; ({ id: name.length, name: name }));&lt;br /&gt;
 &lt;br /&gt;
 // 誤: {} がブロックとして解釈される&lt;br /&gt;
 // const result1 = users.map(name =&amp;gt; { id: name.length, name: name });&lt;br /&gt;
 &lt;br /&gt;
 console.log(result2);&lt;br /&gt;
 // [&lt;br /&gt;
 //    { id: 5, name: &amp;quot;Alice&amp;quot; },&lt;br /&gt;
 //    { id: 3, name: &amp;quot;Bob&amp;quot; },&lt;br /&gt;
 //    { id: 7, name: &amp;quot;Charlie&amp;quot; }&lt;br /&gt;
 // ]&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 省略記法の使い分け ====&lt;br /&gt;
ブロック構文と式本体のどちらを使うかは、処理の内容と可読性を基準に判断する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ アロー関数の構文選択基準&lt;br /&gt;
! 構文 !! 使用場面&lt;br /&gt;
|-&lt;br /&gt;
| 式本体 (暗黙 return) || 単一の式を評価して返すだけの処理&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt;、&amp;lt;code&amp;gt;find&amp;lt;/code&amp;gt; 等の配列メソッドのコールバック&amp;lt;br&amp;gt;シンプルな変換処理や条件式&lt;br /&gt;
|-&lt;br /&gt;
| ブロック構文 || 複数の処理ステップが必要な場合&amp;lt;br&amp;gt;変数への代入や条件分岐が必要な場合&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;console.log&amp;lt;/code&amp;gt; 等の副作用を伴う処理&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 式本体が適切な場面 (シンプルな変換)&lt;br /&gt;
 const prices = [100, 200, 300];&lt;br /&gt;
 const taxIncluded = prices.map(price =&amp;gt; price * 1.1);&lt;br /&gt;
 const expensive    = prices.filter(price =&amp;gt; price &amp;gt;= 200);&lt;br /&gt;
 &lt;br /&gt;
 // ブロック構文が適切な場面 (複数の処理)&lt;br /&gt;
 const formatPrice = (price) =&amp;gt; {&lt;br /&gt;
    const taxed = Math.floor(price * 1.1);&lt;br /&gt;
    return taxed.toLocaleString() + &amp;quot;円&amp;quot;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 console.log(taxIncluded);          // [110, 220, 330]&lt;br /&gt;
 console.log(formatPrice(1000));    // &amp;quot;1,100円&amp;quot;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== thisを束縛しない特性 ==&lt;br /&gt;
==== レキシカルthis ====&lt;br /&gt;
アロー関数は自身の &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; を作成しない。&amp;lt;br&amp;gt;&lt;br /&gt;
代わりに、アロー関数が定義された場所 (レキシカルスコープ) の &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; を継承して使用する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
この特性を、&amp;lt;u&amp;gt;レキシカルthis&amp;lt;/u&amp;gt;と呼ぶ。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 const obj = {&lt;br /&gt;
    name: &amp;quot;Alice&amp;quot;,&lt;br /&gt;
    // 通常のメソッド: thisはobjを参照&lt;br /&gt;
    greet: function() {&lt;br /&gt;
       console.log(&amp;quot;Hello, &amp;quot; + this.name);  // &amp;quot;Hello, Alice&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    // アロー関数はレキシカルthisを継承する&lt;br /&gt;
    // (このケースでは外側のthisを参照)&lt;br /&gt;
 };&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
アロー関数内の &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; は、関数が定義された時点で確定し、呼び出し方によって変化しない。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 通常関数でのthis問題 ====&lt;br /&gt;
通常の関数では、&amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; の値は呼び出し方によって動的に決まる。&amp;lt;br&amp;gt;&lt;br /&gt;
メソッド内でコールバック関数や &amp;lt;code&amp;gt;setTimeout&amp;lt;/code&amp;gt; を使用する時に、&amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; が予期せずグローバルオブジェクト (または、undefined) になるという問題が発生する。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 function Timer() {&lt;br /&gt;
    this.count = 0;&lt;br /&gt;
 &lt;br /&gt;
    // 問題のあるコード: 通常関数のコールバック&lt;br /&gt;
    setTimeout(function() {&lt;br /&gt;
       this.count++;  // this は window または undefined&lt;br /&gt;
       console.log(this.count);  // NaN または TypeError&lt;br /&gt;
    }, 300);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 const timer = new Timer();&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
ES2015以前は、この問題を解決するために以下の2つのパターンが広く使用されていた。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // パターン1: self = this パターン&lt;br /&gt;
 function Timer1() {&lt;br /&gt;
    this.count = 0;&lt;br /&gt;
    const self = this;  // thisを変数に保存&lt;br /&gt;
&lt;br /&gt;
    setTimeout(function() {&lt;br /&gt;
       self.count++;  // selfを通じてアクセス&lt;br /&gt;
       console.log(self.count);  // 1&lt;br /&gt;
    }, 300);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // パターン2: .bind(this) メソッド&lt;br /&gt;
 function Timer2() {&lt;br /&gt;
    this.count = 0;&lt;br /&gt;
 &lt;br /&gt;
    setTimeout(function() {&lt;br /&gt;
       this.count++;&lt;br /&gt;
       console.log(this.count);  // 1&lt;br /&gt;
    }.bind(this), 300);  // thisをバインド&lt;br /&gt;
 }&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== アロー関数による解決 ====&lt;br /&gt;
アロー関数を使用すると、&amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; の問題を自然かつ簡潔に解決できる。&amp;lt;br&amp;gt;&lt;br /&gt;
アロー関数は外側の &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; (この場合、&amp;lt;code&amp;gt;Timer&amp;lt;/code&amp;gt; インスタンス) を継承するため、追加の工夫が不要である。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 function Timer() {&lt;br /&gt;
    this.count = 0;&lt;br /&gt;
 &lt;br /&gt;
    // アロー関数: 外側の this を継承する&lt;br /&gt;
    setTimeout(() =&amp;gt; {&lt;br /&gt;
       this.count++;  // this は Timer インスタンスを参照&lt;br /&gt;
       console.log(this.count);  // 1&lt;br /&gt;
    }, 300);&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 const timer = new Timer();&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
メソッド内のコールバックでも同様に &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; が保持される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 const counter = {&lt;br /&gt;
    count: 0,&lt;br /&gt;
    items: [1, 2, 3],&lt;br /&gt;
 &lt;br /&gt;
    // アロー関数コールバック: thisがcounterを参照&lt;br /&gt;
    increment: function() {&lt;br /&gt;
       this.items.forEach(item =&amp;gt; {&lt;br /&gt;
          this.count += item;  // this は counter を参照&lt;br /&gt;
       });&lt;br /&gt;
       console.log(this.count);  // 6&lt;br /&gt;
    }&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 counter.increment();&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== アロー関数の制約 ==&lt;br /&gt;
==== 使用できない場面 ====&lt;br /&gt;
&amp;lt;u&amp;gt;アロー関数には、通常の関数と異なる制約があり、以下の場面では使用できない または 使用すべきでない。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ アロー関数の使用制約&lt;br /&gt;
! 制約事項 !! 説明&lt;br /&gt;
|-&lt;br /&gt;
| オブジェクトメソッドの定義 || アロー関数の &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; はオブジェクト自身を参照しない。&amp;lt;br&amp;gt;メソッドには通常の関数定義またはメソッド短縮記法を使用する。&lt;br /&gt;
|-&lt;br /&gt;
| コンストラクタとしての使用 || &amp;lt;code&amp;gt;new&amp;lt;/code&amp;gt; キーワードでアロー関数を呼び出すと &amp;lt;u&amp;gt;TypeError&amp;lt;/u&amp;gt; が発生する。&lt;br /&gt;
|-&lt;br /&gt;
| argumentsオブジェクトの参照 || アロー関数は &amp;lt;code&amp;gt;arguments&amp;lt;/code&amp;gt; オブジェクトを持たない。&amp;lt;br&amp;gt;可変長引数が必要な場合は残余引数 &amp;lt;code&amp;gt;(...args)&amp;lt;/code&amp;gt; を使用する。&lt;br /&gt;
|-&lt;br /&gt;
| 動的thisが必要な場面 || &amp;lt;code&amp;gt;addEventListener&amp;lt;/code&amp;gt; 等でコールバックの &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; をイベントターゲットにする場合はアロー関数は不適切&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 各制約のコード例 ====&lt;br /&gt;
オブジェクトメソッドでの制約を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 const person = {&lt;br /&gt;
    name: &amp;quot;Alice&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
    // 正: 通常のメソッド定義&lt;br /&gt;
    greetFunction: function() {&lt;br /&gt;
       console.log(&amp;quot;Hello, &amp;quot; + this.name);  // &amp;quot;Hello, Alice&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
 &lt;br /&gt;
    // 正: メソッド短縮記法 (推奨)&lt;br /&gt;
    greetShorthand() {&lt;br /&gt;
       console.log(&amp;quot;Hello, &amp;quot; + this.name);  // &amp;quot;Hello, Alice&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    // 誤: アロー関数のthisはグローバルを参照&lt;br /&gt;
    greetArrow: () =&amp;gt; {&lt;br /&gt;
       console.log(&amp;quot;Hello, &amp;quot; + this.name);  // undefined (グローバル)&lt;br /&gt;
    },&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 person.greetArrow();      // &amp;quot;Hello, undefined&amp;quot;&lt;br /&gt;
 person.greetFunction();   // &amp;quot;Hello, Alice&amp;quot;&lt;br /&gt;
 person.greetShorthand();  // &amp;quot;Hello, Alice&amp;quot;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
コンストラクタとしての制約を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 通常の関数: コンストラクタとして使用できる&lt;br /&gt;
 function RegularFunction(name) {&lt;br /&gt;
    this.name = name;&lt;br /&gt;
 }&lt;br /&gt;
 const obj1 = new RegularFunction(&amp;quot;Alice&amp;quot;);  // OK&lt;br /&gt;
 &lt;br /&gt;
 // アロー関数: コンストラクタとして使用できない&lt;br /&gt;
 const ArrowFunction = (name) =&amp;gt; {&lt;br /&gt;
    this.name = name;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 const obj2 = new ArrowFunction(&amp;quot;Bob&amp;quot;);  // TypeError: ArrowFunction is not a constructor&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;arguments&amp;lt;/code&amp;gt; オブジェクトの制約を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 // 通常の関数: arguments オブジェクトを持つ&lt;br /&gt;
 function regularSum() {&lt;br /&gt;
    let total = 0;&lt;br /&gt;
    for (let i = 0; i &amp;lt; arguments.length; i++) {&lt;br /&gt;
       total += arguments[i];&lt;br /&gt;
    }&lt;br /&gt;
    return total;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 // アロー関数: arguments は使用できない&lt;br /&gt;
 const arrowSum = () =&amp;gt; {&lt;br /&gt;
    // console.log(arguments);  // ReferenceError: arguments is not defined&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 // アロー関数での代替: 残余引数を使用&lt;br /&gt;
 const arrowSumFixed = (...args) =&amp;gt; {&lt;br /&gt;
    return args.reduce((total, n) =&amp;gt; total + n, 0);&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 console.log(regularSum(1, 2, 3));    // 6&lt;br /&gt;
 console.log(arrowSumFixed(1, 2, 3)); // 6&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;addEventListener&amp;lt;/code&amp;gt; での制約を以下に示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 const button = document.querySelector(&amp;quot;button&amp;quot;);&lt;br /&gt;
 &lt;br /&gt;
 // 正: 通常の関数でthisをイベントターゲットとして使用&lt;br /&gt;
 button.addEventListener(&amp;quot;click&amp;quot;, function() {&lt;br /&gt;
    console.log(this);                 // ボタン要素 (押下された要素)&lt;br /&gt;
    this.classList.add(&amp;quot;clicked&amp;quot;);     // OK&lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
 // 誤: アロー関数のthisは外側のスコープを参照&lt;br /&gt;
 button.addEventListener(&amp;quot;click&amp;quot;, () =&amp;gt; {&lt;br /&gt;
    console.log(this);                 // window (外側のthis)&lt;br /&gt;
    // this.classList.add(&amp;quot;clicked&amp;quot;);  // エラーの可能性&lt;br /&gt;
 });&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 通常関数との比較 ==&lt;br /&gt;
下表に、アロー関数と通常関数の主な違いを示す。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ アロー関数と通常関数の比較&lt;br /&gt;
! 特性 !! アロー関数 !! 通常関数&lt;br /&gt;
|-&lt;br /&gt;
| this || レキシカル (定義場所のthisを継承) || 呼び出し方に依存して動的に変化&lt;br /&gt;
|-&lt;br /&gt;
| arguments || なし (残余引数 &amp;lt;code&amp;gt;(...args)&amp;lt;/code&amp;gt; を使用) || あり&lt;br /&gt;
|-&lt;br /&gt;
| new可否 || 不可 (TypeError) || 可能&lt;br /&gt;
|-&lt;br /&gt;
| ホイスティング || なし (変数のルールに従う) || 関数宣言のみあり&lt;br /&gt;
|-&lt;br /&gt;
| prototype || なし || あり&lt;br /&gt;
|-&lt;br /&gt;
| 構文 || &amp;lt;code&amp;gt;() =&amp;gt; {}&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;function() {}&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| メソッド定義 || 非推奨 (thisの問題) || 推奨&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reactでの使用場面 ==&lt;br /&gt;
==== コンポーネント定義 ====&lt;br /&gt;
Reactでは、関数コンポーネントをアロー関数で定義することが一般的なパターンである。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 import React, { useState } from &amp;quot;react&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 // アロー関数によるコンポーネント定義&lt;br /&gt;
 const App = () =&amp;gt; {&lt;br /&gt;
    return &amp;lt;h1&amp;gt;Hello, World!&amp;lt;/h1&amp;gt;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 // propsを受け取るコンポーネント&lt;br /&gt;
 const Greeting = ({ name }) =&amp;gt; {&lt;br /&gt;
    return &amp;lt;h2&amp;gt;こんにちは、{name}さん&amp;lt;/h2&amp;gt;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 // 暗黙returnを使用した簡潔な記法 (JSXを括弧で囲む)&lt;br /&gt;
 const SimpleButton = ({ label }) =&amp;gt; (&lt;br /&gt;
    &amp;lt;button&amp;gt;{label}&amp;lt;/button&amp;gt;&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 export default App;&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== イベントハンドラ ====&lt;br /&gt;
Reactのイベントハンドラとして、アロー関数はインラインで記述することが多い。&amp;lt;br&amp;gt;&lt;br /&gt;
アロー関数を使用することにより、外側の &amp;lt;code&amp;gt;this&amp;lt;/code&amp;gt; (クラスコンポーネントの場合) や スコープ内の変数に自然にアクセスできる。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 import React, { useState } from &amp;quot;react&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 const Counter = () =&amp;gt; {&lt;br /&gt;
    const [count, setCount] = useState(0);&lt;br /&gt;
 &lt;br /&gt;
    // アロー関数でイベントハンドラを定義&lt;br /&gt;
    const handleIncrement = () =&amp;gt; {&lt;br /&gt;
       setCount(count + 1);&lt;br /&gt;
    };&lt;br /&gt;
 &lt;br /&gt;
    return (&lt;br /&gt;
       &amp;lt;div&amp;gt;&lt;br /&gt;
          &amp;lt;p&amp;gt;カウント: {count}&amp;lt;/p&amp;gt;&lt;br /&gt;
          {/* インラインのアロー関数 */}&lt;br /&gt;
          &amp;lt;button onClick={() =&amp;gt; setCount(count + 1)}&amp;gt;+1&amp;lt;/button&amp;gt;&lt;br /&gt;
          {/* ハンドラ関数を渡す (関数を渡すのであって、呼び出さない) */}&lt;br /&gt;
          &amp;lt;button onClick={handleIncrement}&amp;gt;+1 (ハンドラ使用)&amp;lt;/button&amp;gt;&lt;br /&gt;
          {/* 誤: () をつけると即時呼び出しになる */}&lt;br /&gt;
          {/* &amp;lt;button onClick={handleIncrement()}&amp;gt;+1&amp;lt;/button&amp;gt; */}&lt;br /&gt;
       &amp;lt;/div&amp;gt;&lt;br /&gt;
    );&lt;br /&gt;
 };&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;イベントハンドラでは、関数を渡す時に &amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt; を不可しないことが重要である。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;u&amp;gt;&amp;lt;code&amp;gt;onClick={handleClick}&amp;lt;/code&amp;gt; は関数の参照を渡すが、&amp;lt;code&amp;gt;onClick={handleClick()}&amp;lt;/code&amp;gt; はレンダリング時に即座に関数を呼び出してしまう。&amp;lt;/u&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==== 配列メソッドとの組み合わせ ====&lt;br /&gt;
Reactでデータをリストとして表示する時、&amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt; と アロー関数の組み合わせが頻繁に使用される。&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 import React from &amp;quot;react&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 const ItemList = ({ items }) =&amp;gt; {&lt;br /&gt;
    return (&lt;br /&gt;
       &amp;lt;ul&amp;gt;&lt;br /&gt;
          {/* map とアロー関数でリスト要素を生成 */}&lt;br /&gt;
          {items.map(item =&amp;gt; (&lt;br /&gt;
             &amp;lt;li key={item.id}&amp;gt;{item.name}&amp;lt;/li&amp;gt;&lt;br /&gt;
          ))}&lt;br /&gt;
       &amp;lt;/ul&amp;gt;&lt;br /&gt;
    );&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 const FilteredList = ({ items }) =&amp;gt; {&lt;br /&gt;
    // filter と map を組み合わせてアクティブな項目のみ表示&lt;br /&gt;
    const activeItems = items&lt;br /&gt;
       .filter(item =&amp;gt; item.isActive)&lt;br /&gt;
       .map(item =&amp;gt; (&lt;br /&gt;
          &amp;lt;li key={item.id}&amp;gt;{item.name}&amp;lt;/li&amp;gt;&lt;br /&gt;
       ));&lt;br /&gt;
 &lt;br /&gt;
    return &amp;lt;ul&amp;gt;{activeItems}&amp;lt;/ul&amp;gt;;&lt;br /&gt;
 };&lt;br /&gt;
 &lt;br /&gt;
 // 使用例&lt;br /&gt;
 const sampleItems = [&lt;br /&gt;
    { id: 1, name: &amp;quot;リンゴ&amp;quot;,   isActive: true  },&lt;br /&gt;
    { id: 2, name: &amp;quot;バナナ&amp;quot;,   isActive: false },&lt;br /&gt;
    { id: 3, name: &amp;quot;チェリー&amp;quot;, isActive: true  }&lt;br /&gt;
 ];&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連情報 ==&lt;br /&gt;
* [[JavaScriptの基礎 - 関数宣言と関数式]]&lt;br /&gt;
*: 関数宣言と関数式、デフォルト引数、残余引数&lt;br /&gt;
* [[JavaScriptの基礎 - 変数宣言]]&lt;br /&gt;
*: let / const / varの宣言方法、スコープ、ホイスティング&lt;br /&gt;
* [[JavaScriptの基礎 - クロージャ]]&lt;br /&gt;
*: レキシカルスコープ、クロージャの仕組みと実用例&lt;br /&gt;
* [[JavaScriptの基礎 - コールバック関数]]&lt;br /&gt;
*: コールバック関数、高階関数、タイマ、イベントリスナー&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{#seo:&lt;br /&gt;
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki&lt;br /&gt;
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,電気回路,電子回路,基板,プリント基板&lt;br /&gt;
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux&lt;br /&gt;
|image=/resources/assets/MochiuLogo_Single_Blue.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;br /&gt;
[[カテゴリ:Web]]&lt;/div&gt;</summary>
		<author><name>Wiki</name></author>
	</entry>
</feed>