Movatterモバイル変換


[0]ホーム

URL:


大樹 小倉, profile picture
Uploaded by大樹 小倉
PDF, PPTX13,146 views

JavaScript基礎勉強会

社内でやったJavaScriptの基礎勉強する会のためのスライドです

Embed presentation

Download as PDF, PPTX
第一回JavaScript勉強会小倉 大樹
JavaScript道1. 必須の基礎知識2. モダンJavaScript 初級編3. JavaScript最新事情4. 以後未定ECMAScript今日はここやります
JavaScriptの基礎知識jQuery その前に
strict mode変数宣言関数定義スコープクロージャプロトタイプ指向CoursesJavaScriptの基礎知識
Strict modeゆるふわ禁止
strict mode(厳格モード)とは?"use strict"; // global!function() {"use strict"; // innner only}
strict mode宣言されていない変数への代入書込み不可の変数への代入書き込み不可プロパティへの代入削除不可のプロパティの削除プロパティ名の重複関数の引数名の重複etcetcetcetc…………効果Error!
変数宣言おおっと 落とし穴!
変数の巻き上げ以下がどうなるかわかりますか?(function () {console.log(a);var a = 'aaaa';console.log(a);})();undefined“aaaa”エラーにならない!
変数の宣言変数の巻き上げどうしてエラーにならなかったの?(function () {var a;console.log(a);var a = 'aaaa';console.log(a);})();こういう風に解釈されたから
変数の宣言全部 ”button No. ${buttons.length}” と表示されてしまう!なんか問題あんの? 適当に書けて便利じゃん?var buttons = document.querySelectorAll('button');for (var i = 0; i < buttons.length; i++) {buttons[i].addEventListener('click',function () { console.log('button No.' + i); });}
変数宣言のルール変数の宣言は全部関数の先頭でダサいけど、そういう言語だから諦める
関数定義案外ややこしい
関数宣言関数式// statementfunction hoge() {}!// expressionvar hoge = function() {};何がちがうの……わからん!
関数の定義方法宣言だと関数名の巻き上げが行われるなのでルーズな書き方が出来てしまうどっちを使うべきなの?ゆるふわ禁止!基本は関数式!
スコープ基本です
スコープ二種類しかないよvar globar = 'global desu';!function scope1() {var locar = 'local desu';console.log(globar); // global desufunction scope2() {var locarSecond = 'local mark2 desu';console.log(locar); // local desu}console.log(locarSecond); // ReferenceError: locarSecondis not defined}console.log(locar); // ReferenceError: locar is notdefined
スコープ応用テクニック(function() {var locar = 'local desu';window.globar = 'global desu';})();console.log(locar); // ReferenceError: locar is notdefinedconsole.log(globar); // global desuグローバル汚染を防ぐため、ほんとに最低限の作法。モダンJSにおいてはモジュール化の手法を学ぶべし。
クロージャこれ知らないとはじまらない!
その前に
呼び出すたびに数をインクリメントしていく関数作れますか何種類クロージャの例題あるある
簡単な実装var i = 0;!var inc = function() {i += 1;return i;};!inc(); // 1inc(); // 2inc(); // 3いけてない……
var i = 0;var h = 0;!var inc1 = function() {i += 1;return i;};!var inc2 = function() {h += 1;return h;};何がダメかグローバル汚染、汎用性なし、拡張性なし……
クロージャ使えってか?
クロージャを使った解答var incrementGenerator = function (start) {var inc = function () {start += 1;return start;}return inc;};!var inc1 = incrementGenerator(0);var inc2 = incrementGenerator(0);!inc1(); // 1inc2(); // 1inc1(); // 2inc2(); // 2
なるほどわからん関数閉包はプログラミング言語における関数オブジェクトの一種。いくつかの言語ではラムダ式や無名関数で実現している。引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決することを特徴とする。関数とそれを評価する環境のペアであるともいえる。この概念は少なくとも1960年代のSECDマシンまで ることができる。from wikipediaどういうこと?
復習:スコープvar globar = 'global desu';!function scope1() {var locar = 'local desu';console.log(globar); // global desufunction scope2() {var locarSecond = 'local mark2 desu';console.log(locar); // local desu}console.log(locarSecond); // ReferenceError:locarSecond is not defined}console.log(locar); // ReferenceError: locar is notdefined
復習:スコープvar staticScope = (function () {var locar = 'local desu';var innerEnvironment = function () {return locar;};return innerEnvironment;})();!console.log(staticScope()); // local desuconsole.log(staticScope()); // local desu参照した変数が生き続ける
レキシカルスコープ理解のポイント• 上のスコープ(関数)の変数を参照(束縛)出来る• 束縛した環境は持ち運べる• 実行ごとに新しい環境が作られる• 定義時の静的なスコープが参照範囲それだけ
Q:何に使えるの?例えば• データと振る舞いの結合が出来る• プライベート変数、関数みたいなものを作れる• カリー化などの関数型テクニック• その他……A:色んなところ
でも循環参照だけは勘弁な!呼吸するように使う
プロトタイプ指向クラスとは違うのだよ
オブジェクト指向に大切なこと振る舞いとデータの結合情報の隠多態性
case: プロトタイプvar Greeter = (function () {function Greeter(message) {this.greeting = message;}Greeter.prototype.greet = function () {return "Hello, " + this.greeting;};return Greeter;})();!var greeter = new Greeter("world");console.log(greeter.greet());
class Greeter {greeting: string;constructor(message: string) {this.greeting = message;}greet() {return "Hello, " + this.greeting;}}!var greeter = new Greeter("world");console.log(greeter.greet());case: クラス
JavaScriptはオブジェクト指向言語
Caution!
JavaScriptのヤバいところオブジェクトの定義方法がいくつもあるクラス的なものの定義方法もいくつもある継承的なものの実現方法がいくつもある後から定義を拡張したりとか出来るそれぞれ流行り廃りが激しいしかもそれぞれ互換性がなかったりする
やってはいけないそもそも使い方を知らない(論外)ネットで探してコピペ(論外)オレオレオブジェクト指向ライブラリを作る(趣味でやろう)サードパーティライブラリが提供しているものを使う(微妙な所)
どうするべき?チームで話し合ってライブラリと書き方を統一するAltJSを使うEcmaScrip6を待つしかないと思う……
次回の予定オブザーバーパターンjshintPromiseモジュール化いろいろ

Recommended

PDF
モダンJavaScript環境構築一歩目
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
PDF
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
PDF
JavaScriptユーティリティライブラリの紹介
PPT
第4回勉強会 Groovyの文法からSpockまで
PDF
大規模なJavaScript開発の話
PDF
覚醒!JavaScript
PDF
Javascriptのあれやこれやをまとめて説明してみる
PDF
React.jsでクライアントサイドなWebアプリ入門
PDF
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
PDF
キメるClojure
PDF
ECMAScript6による関数型プログラミング
PDF
JVMの中身を可視化してみた
PPTX
.NET Compiler Platform
PDF
JavaのテストGroovyでいいのではないかという話
PDF
Clean Architectureで設計してRxJSを使った話
PDF
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
PDF
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
PDF
これからのJavaScriptの話
PDF
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
PPTX
歌舞伎座Tech Rx会
PPT
第5回勉強会
PDF
TypeScript 1.0 オーバービュー
PDF
AngularJS+TypeScript - AngularJS 1周年記念勉強会
PDF
Java初心者がJava8のラムダ式をやってみた
PDF
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
PDF
コンパイラ指向ReVIEW
PDF
JavaScript入門
PDF
ECMAScript没proposal追悼式

More Related Content

PDF
モダンJavaScript環境構築一歩目
PDF
Java開発の強力な相棒として今すぐ使えるGroovy
PDF
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
PDF
JavaScriptユーティリティライブラリの紹介
PPT
第4回勉強会 Groovyの文法からSpockまで
PDF
大規模なJavaScript開発の話
PDF
覚醒!JavaScript
PDF
Javascriptのあれやこれやをまとめて説明してみる
モダンJavaScript環境構築一歩目
Java開発の強力な相棒として今すぐ使えるGroovy
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
JavaScriptユーティリティライブラリの紹介
第4回勉強会 Groovyの文法からSpockまで
大規模なJavaScript開発の話
覚醒!JavaScript
Javascriptのあれやこれやをまとめて説明してみる

What's hot

PDF
React.jsでクライアントサイドなWebアプリ入門
PDF
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
PDF
キメるClojure
PDF
ECMAScript6による関数型プログラミング
PDF
JVMの中身を可視化してみた
PPTX
.NET Compiler Platform
PDF
JavaのテストGroovyでいいのではないかという話
PDF
Clean Architectureで設計してRxJSを使った話
PDF
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
PDF
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
PDF
これからのJavaScriptの話
PDF
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
PPTX
歌舞伎座Tech Rx会
PPT
第5回勉強会
PDF
TypeScript 1.0 オーバービュー
PDF
AngularJS+TypeScript - AngularJS 1周年記念勉強会
PDF
Java初心者がJava8のラムダ式をやってみた
PDF
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
PDF
コンパイラ指向ReVIEW
React.jsでクライアントサイドなWebアプリ入門
これからのJSの話をしよう ~jQueryで作るTwitterアプリ~ (Gunma.web #2 2010/10/9)
ng-japan 2015 TypeScript+AngularJS 1.3
キメるClojure
ECMAScript6による関数型プログラミング
JVMの中身を可視化してみた
.NET Compiler Platform
JavaのテストGroovyでいいのではないかという話
Clean Architectureで設計してRxJSを使った話
俺のコードがどこでつかわれているのかわからない問題 あるいはマイナーOSSの生存戦略
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
これからのJavaScriptの話
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
歌舞伎座Tech Rx会
第5回勉強会
TypeScript 1.0 オーバービュー
AngularJS+TypeScript - AngularJS 1周年記念勉強会
Java初心者がJava8のラムダ式をやってみた
20150131_jQueryのようにWebテストが書けるGeb Navigator APIの紹介
コンパイラ指向ReVIEW

Similar to JavaScript基礎勉強会

PDF
JavaScript入門
PDF
ECMAScript没proposal追悼式
PDF
Effective JavaScript Ch.1
PDF
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
PPTX
RubyとJavaScriptに見る第一級関数
PDF
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 1 章
PDF
関数プログラミング入門
PDF
これからのJavaScriptー関数型プログラミングとECMAScript6
PDF
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
PDF
JavaScript 勉強会 ― 変数・演算子・文
PDF
Kanazawa.js.Next
PDF
Miyazaki.js vol.1 スコープの話
PDF
JavaScript 講習会 #1
 
ODP
Javascriptで学ぶ Functional Programming
PDF
JavaScript.Next
PDF
Web講座 第8回
PDF
クロージャー
PPTX
Nds meetup8 lt
PDF
ちょっと詳しくJavaScript 第2回【関数と引数】
PPTX
前期講座09
JavaScript入門
ECMAScript没proposal追悼式
Effective JavaScript Ch.1
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 2 章
RubyとJavaScriptに見る第一級関数
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 1 章
関数プログラミング入門
これからのJavaScriptー関数型プログラミングとECMAScript6
ちょっと詳しくJavaScript 第4回【スコープとクロージャ】
JavaScript 勉強会 ― 変数・演算子・文
Kanazawa.js.Next
Miyazaki.js vol.1 スコープの話
JavaScript 講習会 #1
 
Javascriptで学ぶ Functional Programming
JavaScript.Next
Web講座 第8回
クロージャー
Nds meetup8 lt
ちょっと詳しくJavaScript 第2回【関数と引数】
前期講座09

JavaScript基礎勉強会


[8]ページ先頭

©2009-2025 Movatter.jp