JavaScript、jQuery初学者です。
わかりにくい部分があれば申し訳ありません。
前提・実現したいこと
参考元
参考元の記事を元に、画像投稿時にプレビューが表示される機能を実装しております。
その際、FileReaderオブジェクトのonloadプロパティに代入されている値について理解出来ない点が二つあり、質問させていただきました。
application.js
$(function(){ const $fileField = $('#file'); $($fileField).on('change', $fileField, function(e) { let file = e.target.files[0]; let reader = new FileReader(); const $preview = $("#img_field"); reader.onload = (function(file) { return function(e) { $preview.empty(); $preview.append($('<img>').attr({ src: e.target.result, width: "100%", class: "preview", title: file.name })); }; })(file); reader.readAsDataURL(file); }); });
上記のコードを元にプレビュー機能は実装出来ています。
しかし下記の二つのことが理解出来ません。
reader.onload = (function(file) { return function(e) { $preview.empty(); $preview.append($('<img>').attr({ src: e.target.result, width: "100%", class: "preview", title: file.name })); }; })(file);
の中で、
1、return function(e)で返ってくるeは
$($fileField).on('change', $fileField, function(e) { . . .
で書かれているchangeに対してのイベントという解釈であっているでしょうか?
私のイメージとして、function(e)はイベントハンドラの引数として渡されて、eが使えるというイメージがあったため、return function(e)が何を表しているのか理解できていない状態です。
2、上記コードの最後で書かれている(file);は何を表しているのでしょうか?
関数の定義の最後に(引数)を書くことで何が起きるのでしょうか?
非常に単純な問題なのかもしれませんが、何卒ご教授のほどよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/03 12:32