Submit Search
Javascriptのあれやこれやをまとめて説明してみる
11 likes
3,019 views
Shunji Konishi
1 of 17
Download now
Downloaded 20 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
More Related Content
PDF
モダンJavaScript環境構築一歩目
大樹 小倉
PDF
JavaScript基礎勉強会
大樹 小倉
PDF
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
civic Sasaki
PDF
大規模なJavaScript開発の話
terurou
PDF
JavaScript MVC入門
大樹 小倉
PDF
覚醒!JavaScript
Haraguchi Go
PDF
JavaScriptユーティリティライブラリの紹介
Yusuke Hirao
PDF
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
モダンJavaScript環境構築一歩目
大樹 小倉
JavaScript基礎勉強会
大樹 小倉
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
civic Sasaki
大規模なJavaScript開発の話
terurou
JavaScript MVC入門
大樹 小倉
覚醒!JavaScript
Haraguchi Go
JavaScriptユーティリティライブラリの紹介
Yusuke Hirao
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
What's hot
(19)
PPT
第4回勉強会 Groovyの文法からSpockまで
Mugen Fujii
PDF
キメるClojure
Yoshitaka Kawashima
PDF
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
PDF
JVMの中身を可視化してみた
Kengo Toda
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
PDF
プログラミング言語Clojureのニャンパスでの活用事例
sohta
PDF
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
Yuki Fujisawa
PPTX
AngularJS2でつまづいたこと
Takehiro Takahashi
PDF
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
PDF
JobStreamerではじめるJavaBatchのクラウド分散実行
Yoshitaka Kawashima
PDF
Java初心者がJava8のラムダ式をやってみた
Aya Ebata
PDF
Jvm言語とJava、切っても切れないその関係
yy yank
PDF
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Masahiro Wakame
PDF
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
PDF
コンパイラ指向ReVIEW
Masahiro Wakame
PDF
Async DeepDive basics
Kouji Matsui
PDF
JavaScript 研修
Yuki Ishikawa
PDF
Sd Loader Seasar Con2009 White
Akio Katayama
PDF
Griffon10 in groovy_fx
kimukou_26 Kimukou
第4回勉強会 Groovyの文法からSpockまで
Mugen Fujii
キメるClojure
Yoshitaka Kawashima
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
JVMの中身を可視化してみた
Kengo Toda
Java開発の強力な相棒として今すぐ使えるGroovy
Yasuharu Nakano
プログラミング言語Clojureのニャンパスでの活用事例
sohta
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
Yuki Fujisawa
AngularJS2でつまづいたこと
Takehiro Takahashi
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
JobStreamerではじめるJavaBatchのクラウド分散実行
Yoshitaka Kawashima
Java初心者がJava8のラムダ式をやってみた
Aya Ebata
Jvm言語とJava、切っても切れないその関係
yy yank
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Masahiro Wakame
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
コンパイラ指向ReVIEW
Masahiro Wakame
Async DeepDive basics
Kouji Matsui
JavaScript 研修
Yuki Ishikawa
Sd Loader Seasar Con2009 White
Akio Katayama
Griffon10 in groovy_fx
kimukou_26 Kimukou
Ad
Similar to Javascriptのあれやこれやをまとめて説明してみる
(20)
PPTX
Java script1
Kiminari Homma
PDF
お手軽Ajaxアプリケーションの作り方
Shunji Konishi
PDF
LT#7 Hello coffeeしてきた
Shingo Inoue
PDF
Prototypeベース in JavaScript
Ryo Maruyama
PDF
ML system design_pattern
yusuke shibui
PDF
Web制作勉強会 #2
Moto Yan
PPTX
Rawlerフレームワーク(全体)
Takaichi Ito
PPT
Groovyコンファレンス
Shinichiro Takezaki
PPTX
Webスクレイピング用の言語っぽいものを作ったよ
Takaichi Ito
PDF
SPA×Auth0
春奈 岡
PPT
おとなのテキストマイニング
Munenori Sugimura
PDF
わかる LT@2
Shingo Inoue
PDF
Lombok ハンズオン
Hiroto Yamakawa
PDF
ここからはじめるAction Script 3.0 入門前
Yusuke Kamo
PPTX
Reactつかってみた
Minori Tokuda
PDF
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
PPTX
Ll tiger clojure
Toshiaki Maki
PPTX
PHP基礎勉強会
Yuji Otani
PDF
今日からはじめるHTML5 ver.2012
Yasuhito Yabe
PPTX
TypeScriptをオススメする理由
Yusuke Naka
Java script1
Kiminari Homma
お手軽Ajaxアプリケーションの作り方
Shunji Konishi
LT#7 Hello coffeeしてきた
Shingo Inoue
Prototypeベース in JavaScript
Ryo Maruyama
ML system design_pattern
yusuke shibui
Web制作勉強会 #2
Moto Yan
Rawlerフレームワーク(全体)
Takaichi Ito
Groovyコンファレンス
Shinichiro Takezaki
Webスクレイピング用の言語っぽいものを作ったよ
Takaichi Ito
SPA×Auth0
春奈 岡
おとなのテキストマイニング
Munenori Sugimura
わかる LT@2
Shingo Inoue
Lombok ハンズオン
Hiroto Yamakawa
ここからはじめるAction Script 3.0 入門前
Yusuke Kamo
Reactつかってみた
Minori Tokuda
PhpStormを使おう --高槻からは快速急行が早くなります #jbugj
Hisateru Tanaka
Ll tiger clojure
Toshiaki Maki
PHP基礎勉強会
Yuji Otani
今日からはじめるHTML5 ver.2012
Yasuhito Yabe
TypeScriptをオススメする理由
Yusuke Naka
Ad
More from Shunji Konishi
(20)
PDF
Salesforceのハッカソンに参加した話
Shunji Konishi
PDF
Salesforce連携のためのOData入門
Shunji Konishi
PDF
プロキシーを使ってテストを楽にする
Shunji Konishi
PDF
MochaとChaiでやるJavaScriptテスト
Shunji Konishi
PPTX
SendGridサンプルの紹介
Shunji Konishi
PDF
セキュリティの考え方
Shunji Konishi
PDF
一番簡単なWebSocketの試し方
Shunji Konishi
PDF
WebSocketでリアルタイムクイズアプリを作ってみた
Shunji Konishi
PDF
良質なコードを高速に書くコツ
Shunji Konishi
PPTX
Heroku tips1
Shunji Konishi
PDF
Playframework1でSeleniumテスト
Shunji Konishi
PPTX
Heroku Dyno再起動時の振る舞い
Shunji Konishi
PPTX
Dyno cycling behavior of Heroku
Shunji Konishi
PPTX
Herokuで使えるRDBMS管理者ツール
Shunji Konishi
PPTX
Play1 to Play2
Shunji Konishi
PPTX
Herokuのログ解析ツール
Shunji Konishi
PPTX
Excel2 canvas
Shunji Konishi
PDF
特盛!Heroku
Shunji Konishi
PPTX
文字コードのお話
Shunji Konishi
PPTX
High traffic questionnaire site
Shunji Konishi
Salesforceのハッカソンに参加した話
Shunji Konishi
Salesforce連携のためのOData入門
Shunji Konishi
プロキシーを使ってテストを楽にする
Shunji Konishi
MochaとChaiでやるJavaScriptテスト
Shunji Konishi
SendGridサンプルの紹介
Shunji Konishi
セキュリティの考え方
Shunji Konishi
一番簡単なWebSocketの試し方
Shunji Konishi
WebSocketでリアルタイムクイズアプリを作ってみた
Shunji Konishi
良質なコードを高速に書くコツ
Shunji Konishi
Heroku tips1
Shunji Konishi
Playframework1でSeleniumテスト
Shunji Konishi
Heroku Dyno再起動時の振る舞い
Shunji Konishi
Dyno cycling behavior of Heroku
Shunji Konishi
Herokuで使えるRDBMS管理者ツール
Shunji Konishi
Play1 to Play2
Shunji Konishi
Herokuのログ解析ツール
Shunji Konishi
Excel2 canvas
Shunji Konishi
特盛!Heroku
Shunji Konishi
文字コードのお話
Shunji Konishi
High traffic questionnaire site
Shunji Konishi
Javascriptのあれやこれやをまとめて説明してみる
1.
クロージャとか即時関数と か関数オブジェクトとか、 JavaScriptのあれやこれや
を⼀一つのサンプルで全部説 明してみる 株式会社FLECT ⼩小⻄西俊司 2014/10/09
2.
この⽂文書の⽬目的 u 某案件で⾒見見つけた、(多分ネット上からコピペしてき
たと思われる)ほんの数⾏行行のコードが、読み解くのに u クロージャ u 即時関数 u オブジェクトとしての関数 u 変数の巻き上げ u などの理理解が必要になるというとても優れものの、い けてねーコードだったので隅々まで解説してみる
3.
要件 u 複数の画像ファイルを選択した時に、そのすべてのファイルのファ
イル名とプレビューを表⽰示する u HTMLのみで⾏行行いサーバとの通信はなし u jQueryは使っても良良い
4.
ヒント: FileReader u
ローカルファイルの読み込みにはHTML5のFileReaderクラスが使⽤用 出来る u readAsDataURLメソッドを実⾏行行すると、読み込み完了了時にonloadイ ベントが発⽣生 u イベント内でe.target.resultでDataURLが取得できる
5.
書いてしまいがちなコード u これは正しく動作する?
6.
動作しない u 画像は正しく表⽰示されるがファイル名は
すべて最後のファイル名になる u スコープの問題 u クロージャと変数束縛 u シングルスレッド実⾏行行
7.
JavaScriptにブロックス コープはない u
JavaScriptの変数宣⾔言はどこで⾏行行っても関数の先頭で⾏行行われたの と同じになる(変数の巻き上げ、と呼ばれている) ただし、可読性をあげ るためには、変数は使 うところで宣⾔言した⽅方 が良良い。 この場合、⻑⾧長い関数で は後の⽅方で宣⾔言する変 数名が既に使われてい るかもしれないという 問題が発⽣生するが、そ もそも、⼀一⾒見見でつかめ ないような⻑⾧長い関数は 書くべきではない
8.
クロージャと変数束縛 u クロージャでは外側のスコープの変数が使えるが、その際の値は
実⾏行行時点での値になる u 下記関数では0..9が表⽰示される
9.
シングルスレッド実⾏行行 u reader#onloadが動くのはchangeイベントを抜けた後
u この時file変数は最後のファイルを指している
10.
ではどう書けば良良いのか?
11.
即時関数を利利⽤用 u FileReaderでググると⼤大概この書き⽅方が紹介されている
12.
即時関数とは u 関数を定義してすぐに実⾏行行するJavaScriptの記法
u 関数定義⾃自体を括弧で括って、それを実⾏行行するための引数の括 弧を後ろに付ける u ⼀一番良良く⾒見見かける⽤用例例はscriptタグ内でスコープ を形成するケース u これによってグローバル変数を汚さないようにしている
13.
jQueryプラグインでよく見 る例 u
$はprototype.js等の別のライブラリでも使⽤用 されているので必ずjQueryオブジェクトを指 すようにする u undefinedは変数名として使⽤用できるので明 ⽰示的に宣⾔言して、引数を渡さないことによっ て確実にundefinedにしている
14.
このケースのポイント u 即時関数によって新たなスコープが形成され、file変数が固定される
u 内側の変数は外側の変数を隠す
15.
関数を返す関数 u JavaScriptでは普通に使われる
u 多くの場合このケースのようにスコー プの形成と変数束縛のために使⽤用され る u 分岐でreturnする関数を切切り替える ケースもあるがその場合は、関数⾃自体 は別に宣⾔言する⽅方が良良い u ぱっと⾒見見わかりにくいので、可能な限 り使わない⽅方が良良い
16.
もっと良良い書き⽅方 u jQuery.eachでfile変数が束縛されているので即時関数を使
⽤用する必要がない
17.
まとめ u スコープを形成。他の⾔言語だとあまり聞
かないけどJavaScriptでは超重要 u この辺がちゃんとわかってないとjQuery とかAngularとかのソースを⾒見見てもまった く理理解できない u 配列列のループは原則forでまわさず jQuery.eachを使⽤用する u Array.forEachもあるが古いブラウザは対 応していない u ネットからコードをコピる場合も思考停 ⽌止せずにちゃんと意味を理理解する
Download