[過去ログ] + JavaScript の質問用スレッド vol.124 + (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(6): (ワッチョイ 8a52-hQZx [61.87.108.223]) 2021/11/10(水)15:24 ID:jxD2VXPG0(1/2) AAS
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
省11
2
(2): (ワッチョイ 7f52-hQZx [61.87.108.223]) 2021/11/10(水)15:26 ID:jxD2VXPG0(2/2) AAS
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 外部リンク:jsdo.it 外部リンク:jsbin.com 外部リンク:jsfiddle.net 外部リンク:ideone.com

■過去スレ全集
外部リンク:www2.atpages.jp
省3
3
(2): (ブーイモ MM0f-8Kye [163.49.205.32]) 2021/11/10(水)15:46 ID:qwlO4mThM(1) AAS
前スレ998の質問だけど
一般的にはc2が返してるような関数のことをクロージャと呼ぶことが多いが
JavaScriptの関数は全部クロージャなのでc2自体もクロージャ
4
(1): (ワッチョイ df4e-9n+R [210.138.216.243]) 2021/11/10(水)16:02 ID:ABhSQgxq0(1) AAS
なるほど
5
(1): (ワッチョイ 5f21-+Epa [222.230.61.102]) 2021/11/10(水)17:50 ID:KxrU4/8D0(1) AAS
>>998
追記です

3つの要素を持つオブジェクトセットを利用して、
関数内のクローズ状態を実現する、ということ意味して
そのセットをクロージャーと呼んでいるのだという理解でいかがでしょう?
6
(1): (ワッチョイ ff46-H2rd [111.98.111.65]) 2021/11/10(水)18:59 ID:l7XWnHd40(1) AAS
過去スレみれねー
7
(1): (ワッチョイ 5f21-+Epa [222.230.61.102]) 2021/11/11(木)11:19 ID:FWyFKZol0(1/5) AAS
前スレで誤字があったので訂正と
クロージャーに関してわかりやすく説明しときます
closerは誤りでclouserでした
8
(1): (ブーイモ MM83-WKYw [210.138.176.182]) 2021/11/11(木)11:24 ID:vTNkP19HM(1) AAS
末尾セミコロンはどうしたらいいですか?
9: (ワッチョイ 5f21-+Epa [222.230.61.102]) 2021/11/11(木)11:47 ID:FWyFKZol0(2/5) AAS
【クロージャー】
クロージャーはJSの関数に下記の仕組みを持たせるための要素のセットです
・関数内部をクローズにする(外部から直接アクセスできない)
・関数からは外部のプロパティにアクセスできる

この仕組みを作るものがクロージャーです
クロージャーの要素は、おおざっぱに関数自身、関数内情報、関数外部を参照するポインタで、
この要素のセットをクロージャーと呼びます

【外部ポインタの働きと内部情報の動きの確認】
<サンプルコード>
function f1(){ let c=0;return c++; }
省13
10: (ワッチョイ 5f21-+Epa [222.230.61.102]) 2021/11/11(木)11:48 ID:FWyFKZol0(3/5) AAS
コード1では、f1を2回呼びますが、関数呼び出し1回につき、1つの(別々の)クロージャーが生成されます
同じ変数名のcであっても、別物のcとなります
ですから、cはインクリメントされずに0となります

コード2ではf2から戻されるアロー関数を複数回呼び出しますが
関数の呼び出し1回につき、別々のクロージャーが生成されますので
上記と同じようにcは0になります

コード3では、f2から戻されるアロー関数を変数f3に代入し、それを複数回呼び出します
呼び出しのたびに別々のクロージャーが生成されますが
外部への参照は、outer(f2)なので、同じcを参照していますので
複数回呼び出すとcをインクリメントします
省1
11: (ワッチョイ 5f21-+Epa [222.230.61.102]) 2021/11/11(木)11:48 ID:FWyFKZol0(4/5) AAS
【関数はクロージャーか?】
クロージャーは関数ではありませんし
関数はクロージャーではありません

関数内をクローズにし、外部参照を持たせる、という仕組みをつくるための
関数、内部情報、外部参照ポインタのセットがクロージャーです

【言語は多数者が正しい】
f2で戻される無名関数をクロージャーと呼ぶ人がいるのは
クロージャーの説明のために多用されていることで
無名関数をクロージャーと誤解してしまったり

f1が外部からクローズ状態なので、f1がクロージャーなんだと
省5
12: (ワッチョイ 5f21-+Epa [222.230.61.102]) 2021/11/11(木)12:08 ID:FWyFKZol0(5/5) AAS
>>8
javascript.infoでは
[ ]の前にセミコロンは想定していないため、前段と次段のコードが連続することが説明されてます

console.log(1)
[...'string'].forEach(console.log)



console.log(1)[...'string'].forEach(console.log)

と同じ扱いで、1を出力したのち、エラーになります
[]を使うときに思い出してください
13: (ワッチョイ 5f01-Q360 [126.145.174.156]) 2021/11/11(木)13:44 ID:PJUcZthZ0(1) AAS
>>7
closureでは?
14: (ワッチョイ ffdb-H2rd [217.178.96.78]) 2021/11/11(木)14:51 ID:69bvz9620(1) AAS
スジャータ
15: (ブーイモ MM0f-8Kye [163.49.200.151]) 2021/11/11(木)16:11 ID:+2WcRgNnM(1) AAS
クロージャーに「関数内部をクローズにする」なんて意味はないよ
16: (ワッチョイ 7ff0-+Epa [61.205.223.183]) 2021/11/11(木)16:24 ID:YbaQuGpg0(1/2) AAS
JSのクロージャーってどういう意味なの?
17: (ワッチョイ 7ff0-+Epa [61.205.223.183]) 2021/11/11(木)16:26 ID:YbaQuGpg0(2/2) AAS
9の長い長い説明はまったくもって的外れ?
18: (ワッチョイ ff46-H2rd [111.98.111.65]) 2021/11/11(木)18:44 ID:a2zl13Hx0(1/4) AAS
ふーん、なるほどねぇ
19: (ワッチョイ ff46-H2rd [111.98.111.65]) 2021/11/11(木)19:03 ID:a2zl13Hx0(2/4) AAS
||クロージャーは、組み合わされた(囲まれた)関数と、
||その周囲の状態(レキシカル環境)への参照の組み合わせです。
||言い換えれば、クロージャは内側の関数から外側の関数スコープへのアクセスを提供します。
||(MDN)

「関数の内から関数の外を参照できる、参照権限(参照できる状態(仕組み))」ということだろ!!!
これできめ!
20
(1): (ワッチョイ 5f01-lK5T [126.242.217.11]) 2021/11/11(木)19:41 ID:CFwD9UgS0(1/2) AAS
クロージャは関数閉包のこと
関数の中に関数が内包された状態を指す
外側の関数をエンクロージャと呼ぶが、クロージャ=関数ではない
1-
あと 982 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.014s