[過去ログ]
+ JavaScript の質問用スレッド vol.124 + (1002レス)
+ JavaScript の質問用スレッド vol.124 + http://mevius.5ch.net/test/read.cgi/tech/1636525464/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
1: デフォルトの名無しさん (ワッチョイ 8a52-hQZx [61.87.108.223]) [sage] 2021/11/10(水) 15:24:24 ID:jxD2VXPG0 JavaScript を自ら学ぶ人のための質問スレッドです。 >>2-6のテンプレを読んだ上で質問してください。次スレは>>950が>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください ■質問を書く上で (1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。 (2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。 (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など) (3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。 (4) 常に自発的に調べる心構えを持ってください。 具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。 わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。 (5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。 (6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。 ※必ず「問題の事象が再現されること」を確認してください。 必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。 (7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。 (8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。 (9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。 (10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。 ※前スレ + JavaScript の質問用スレッド vol.123 + https://mevius.5ch.net/test/read.cgi/tech/1491143438/ VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured http://mevius.5ch.net/test/read.cgi/tech/1636525464/1
2: デフォルトの名無しさん (ワッチョイ 7f52-hQZx [61.87.108.223]) [sage] 2021/11/10(水) 15:26:36 ID:jxD2VXPG0 ■質問テンプレート 【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4) 【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。 【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用) 【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。 【サンプルコード】現象を再現可能な最小限のコードを書いてください。 1レスに収まらないならコード投稿サイトを利用してください。 http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/ ■過去スレ全集 http://www2.atpages.jp/mirror/2ch/javascript/ http://usamimi.info/~mirrorhenkan/2ch/javascript/ (閲覧のみ) ■テンプレ案 https://fiddle.jshell.net/6018r9tu/1/show/light/ http://mevius.5ch.net/test/read.cgi/tech/1636525464/2
3: デフォルトの名無しさん (ブーイモ MM0f-8Kye [163.49.205.32]) [sage] 2021/11/10(水) 15:46:52 ID:qwlO4mThM 前スレ998の質問だけど 一般的にはc2が返してるような関数のことをクロージャと呼ぶことが多いが JavaScriptの関数は全部クロージャなのでc2自体もクロージャ http://mevius.5ch.net/test/read.cgi/tech/1636525464/3
4: デフォルトの名無しさん (ワッチョイ df4e-9n+R [210.138.216.243]) [sage] 2021/11/10(水) 16:02:48 ID:ABhSQgxq0 なるほど http://mevius.5ch.net/test/read.cgi/tech/1636525464/4
5: デフォルトの名無しさん (ワッチョイ 5f21-+Epa [222.230.61.102]) [sage] 2021/11/10(水) 17:50:22 ID:KxrU4/8D0 >>998 追記です 3つの要素を持つオブジェクトセットを利用して、 関数内のクローズ状態を実現する、ということ意味して そのセットをクロージャーと呼んでいるのだという理解でいかがでしょう? http://mevius.5ch.net/test/read.cgi/tech/1636525464/5
6: デフォルトの名無しさん (ワッチョイ ff46-H2rd [111.98.111.65]) [sage] 2021/11/10(水) 18:59:16 ID:l7XWnHd40 過去スレみれねー http://mevius.5ch.net/test/read.cgi/tech/1636525464/6
7: デフォルトの名無しさん (ワッチョイ 5f21-+Epa [222.230.61.102]) [sage] 2021/11/11(木) 11:19:40 ID:FWyFKZol0 前スレで誤字があったので訂正と クロージャーに関してわかりやすく説明しときます closerは誤りでclouserでした http://mevius.5ch.net/test/read.cgi/tech/1636525464/7
8: デフォルトの名無しさん (ブーイモ MM83-WKYw [210.138.176.182]) [sage] 2021/11/11(木) 11:24:24 ID:vTNkP19HM 末尾セミコロンはどうしたらいいですか? http://mevius.5ch.net/test/read.cgi/tech/1636525464/8
9: デフォルトの名無しさん (ワッチョイ 5f21-+Epa [222.230.61.102]) [sage] 2021/11/11(木) 11:47:50 ID:FWyFKZol0 【クロージャー】 クロージャーはJSの関数に下記の仕組みを持たせるための要素のセットです ・関数内部をクローズにする(外部から直接アクセスできない) ・関数からは外部のプロパティにアクセスできる この仕組みを作るものがクロージャーです クロージャーの要素は、おおざっぱに関数自身、関数内情報、関数外部を参照するポインタで、 この要素のセットをクロージャーと呼びます 【外部ポインタの働きと内部情報の動きの確認】 <サンプルコード> function f1(){ let c=0;return c++; } function f2(){ let c=0;return ()=>{let s=0;return [c++,s++];} } let f3=f2() ; 1 f1() ;f1() ;console.log(f1()); 2 f2()();f2()();console.log(f2()()); 3 f3() ;f3() ;console.log(f3()); <結果出力> 1 c:0 2 c:0 s:0 3 c:2 s:0 ここで外部への参照ポインタをouterとします f1のクロージャーは、{関数f1 return c}{変数c}{outer(global} f2のクロージャーは、{関数f2 return function}{変数c}{outer(global} f2のアローの場合、 {無名 return [c,s]}{変数s}{outer(f2)} http://mevius.5ch.net/test/read.cgi/tech/1636525464/9
10: デフォルトの名無しさん (ワッチョイ 5f21-+Epa [222.230.61.102]) [sage] 2021/11/11(木) 11:48:17 ID:FWyFKZol0 コード1では、f1を2回呼びますが、関数呼び出し1回につき、1つの(別々の)クロージャーが生成されます 同じ変数名のcであっても、別物のcとなります ですから、cはインクリメントされずに0となります コード2ではf2から戻されるアロー関数を複数回呼び出しますが 関数の呼び出し1回につき、別々のクロージャーが生成されますので 上記と同じようにcは0になります コード3では、f2から戻されるアロー関数を変数f3に代入し、それを複数回呼び出します 呼び出しのたびに別々のクロージャーが生成されますが 外部への参照は、outer(f2)なので、同じcを参照していますので 複数回呼び出すとcをインクリメントします 一方でアロー関数内の変数sは、コード1や2の説明と同じでインクリメントされません http://mevius.5ch.net/test/read.cgi/tech/1636525464/10
11: デフォルトの名無しさん (ワッチョイ 5f21-+Epa [222.230.61.102]) [sage] 2021/11/11(木) 11:48:37 ID:FWyFKZol0 【関数はクロージャーか?】 クロージャーは関数ではありませんし 関数はクロージャーではありません 関数内をクローズにし、外部参照を持たせる、という仕組みをつくるための 関数、内部情報、外部参照ポインタのセットがクロージャーです 【言語は多数者が正しい】 f2で戻される無名関数をクロージャーと呼ぶ人がいるのは クロージャーの説明のために多用されていることで 無名関数をクロージャーと誤解してしまったり f1が外部からクローズ状態なので、f1がクロージャーなんだと そう理解してる人が多かったりしています クロージャーという言語の用法に関して 何が正しいのかは、それぞれの立場を主張する人数によって 決定することが正しいのかもしれません 以上で訂正とまとめを終わります http://mevius.5ch.net/test/read.cgi/tech/1636525464/11
12: デフォルトの名無しさん (ワッチョイ 5f21-+Epa [222.230.61.102]) [sage] 2021/11/11(木) 12:08:29 ID:FWyFKZol0 >>8 javascript.infoでは [ ]の前にセミコロンは想定していないため、前段と次段のコードが連続することが説明されてます console.log(1) [...'string'].forEach(console.log) は console.log(1)[...'string'].forEach(console.log) と同じ扱いで、1を出力したのち、エラーになります []を使うときに思い出してください http://mevius.5ch.net/test/read.cgi/tech/1636525464/12
13: デフォルトの名無しさん (ワッチョイ 5f01-Q360 [126.145.174.156]) [sage] 2021/11/11(木) 13:44:12 ID:PJUcZthZ0 >>7 closureでは? http://mevius.5ch.net/test/read.cgi/tech/1636525464/13
14: デフォルトの名無しさん (ワッチョイ ffdb-H2rd [217.178.96.78]) [sage] 2021/11/11(木) 14:51:22 ID:69bvz9620 スジャータ http://mevius.5ch.net/test/read.cgi/tech/1636525464/14
15: デフォルトの名無しさん (ブーイモ MM0f-8Kye [163.49.200.151]) [sage] 2021/11/11(木) 16:11:30 ID:+2WcRgNnM クロージャーに「関数内部をクローズにする」なんて意味はないよ http://mevius.5ch.net/test/read.cgi/tech/1636525464/15
16: デフォルトの名無しさん (ワッチョイ 7ff0-+Epa [61.205.223.183]) [sage] 2021/11/11(木) 16:24:36 ID:YbaQuGpg0 JSのクロージャーってどういう意味なの? http://mevius.5ch.net/test/read.cgi/tech/1636525464/16
17: デフォルトの名無しさん (ワッチョイ 7ff0-+Epa [61.205.223.183]) [sage] 2021/11/11(木) 16:26:10 ID:YbaQuGpg0 9の長い長い説明はまったくもって的外れ? http://mevius.5ch.net/test/read.cgi/tech/1636525464/17
18: デフォルトの名無しさん (ワッチョイ ff46-H2rd [111.98.111.65]) [sage] 2021/11/11(木) 18:44:36 ID:a2zl13Hx0 ふーん、なるほどねぇ http://mevius.5ch.net/test/read.cgi/tech/1636525464/18
19: デフォルトの名無しさん (ワッチョイ ff46-H2rd [111.98.111.65]) [sage] 2021/11/11(木) 19:03:41 ID:a2zl13Hx0 ||クロージャーは、組み合わされた(囲まれた)関数と、 ||その周囲の状態(レキシカル環境)への参照の組み合わせです。 ||言い換えれば、クロージャは内側の関数から外側の関数スコープへのアクセスを提供します。 ||(MDN) 「関数の内から関数の外を参照できる、参照権限(参照できる状態(仕組み))」ということだろ!!! これできめ! http://mevius.5ch.net/test/read.cgi/tech/1636525464/19
20: デフォルトの名無しさん (ワッチョイ 5f01-lK5T [126.242.217.11]) [sage] 2021/11/11(木) 19:41:41 ID:CFwD9UgS0 クロージャは関数閉包のこと 関数の中に関数が内包された状態を指す 外側の関数をエンクロージャと呼ぶが、クロージャ=関数ではない http://mevius.5ch.net/test/read.cgi/tech/1636525464/20
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 982 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.008s