Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Teppei Sato
PDF, PPTX
7,753 views
Effective JavaScript Ch.1
Effective JavaScript 社内勉強会用の資料です。
Technology
◦
Read more
44
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 35
2
/ 35
3
/ 35
4
/ 35
5
/ 35
6
/ 35
7
/ 35
8
/ 35
9
/ 35
10
/ 35
11
/ 35
12
/ 35
13
/ 35
14
/ 35
15
/ 35
16
/ 35
17
/ 35
18
/ 35
19
/ 35
20
/ 35
21
/ 35
22
/ 35
23
/ 35
24
/ 35
25
/ 35
26
/ 35
27
/ 35
28
/ 35
29
/ 35
30
/ 35
31
/ 35
32
/ 35
33
/ 35
34
/ 35
35
/ 35
More Related Content
ODP
RSpecのここがすごい!
by
mitim
PPT
Start!! Ruby
by
mitim
PDF
Tottoruby 20130119
by
Takashi SAKAGUCHI
PDF
Tips for bash script
by
Kenta Yamamoto
PPT
クラスのインスタンス変数について
by
Tomoya Kawanishi
PPT
値渡しと参照渡しの比較
by
kitoku_magic
PDF
Perl 6 Object-Oliented Programming
by
risou
PPTX
本当のオブジェクト指向は可読性を上げる
by
Wataru Terada
RSpecのここがすごい!
by
mitim
Start!! Ruby
by
mitim
Tottoruby 20130119
by
Takashi SAKAGUCHI
Tips for bash script
by
Kenta Yamamoto
クラスのインスタンス変数について
by
Tomoya Kawanishi
値渡しと参照渡しの比較
by
kitoku_magic
Perl 6 Object-Oliented Programming
by
risou
本当のオブジェクト指向は可読性を上げる
by
Wataru Terada
Viewers also liked
PDF
時を超えた JavaScript の道
by
Teppei Sato
KEY
goog.require()を手書きしていいのは小学生まで
by
Teppei Sato
PDF
Browser oh browser browser
by
Teppei Sato
PDF
templateとautoの型推論
by
MITSUNARI Shigeo
PDF
Emcpp item31
by
mitsutaka_takeda
PDF
Emcpp item41
by
mitsutaka_takeda
PPTX
Emcpp0506
by
Takatoshi Kondo
PDF
Effective Modern C++ 読書会 Item 35
by
Keisuke Fukuda
PPTX
Effective Modern C++勉強会#4 Item 17, 18資料
by
Ryo Igarashi
PPTX
Effective modern c++ 5
by
uchan_nos
PPTX
TypeScriptをオススメする理由
by
Yusuke Naka
PDF
JavaScript Language Update 2016 (LLoT)
by
Teppei Sato
PDF
サイボウズの現在と未来
by
Teppei Sato
PDF
離れた場所でも最高のチームワークを実現する方法 ーサイボウズ開発チームのリモートワーク事例ー
by
Teppei Sato
PDF
Effective ES6
by
Teppei Sato
PDF
You Don't Know ES Modules
by
Teppei Sato
PDF
サイボウズのフロントエンド開発 現在とこれからの挑戦
by
Teppei Sato
時を超えた JavaScript の道
by
Teppei Sato
goog.require()を手書きしていいのは小学生まで
by
Teppei Sato
Browser oh browser browser
by
Teppei Sato
templateとautoの型推論
by
MITSUNARI Shigeo
Emcpp item31
by
mitsutaka_takeda
Emcpp item41
by
mitsutaka_takeda
Emcpp0506
by
Takatoshi Kondo
Effective Modern C++ 読書会 Item 35
by
Keisuke Fukuda
Effective Modern C++勉強会#4 Item 17, 18資料
by
Ryo Igarashi
Effective modern c++ 5
by
uchan_nos
TypeScriptをオススメする理由
by
Yusuke Naka
JavaScript Language Update 2016 (LLoT)
by
Teppei Sato
サイボウズの現在と未来
by
Teppei Sato
離れた場所でも最高のチームワークを実現する方法 ーサイボウズ開発チームのリモートワーク事例ー
by
Teppei Sato
Effective ES6
by
Teppei Sato
You Don't Know ES Modules
by
Teppei Sato
サイボウズのフロントエンド開発 現在とこれからの挑戦
by
Teppei Sato
Similar to Effective JavaScript Ch.1
PDF
Kanazawa.js.Next
by
dynamis
PDF
JavaScriptことはじめ
by
Yuki Ishikawa
PDF
これからのJavaScriptー関数型プログラミングとECMAScript6
by
TanUkkii
PDF
JavaScript.Next
by
dynamis
PPTX
JavaScriptクイックスタート
by
Shumpei Shiraishi
PDF
JSer Class #1
by
mizuky fujitani
PDF
JavaScriptの落とし穴
by
ikdysfm
PPTX
Nds meetup8 lt
by
ushiboy
PDF
JavaScript入門
by
Ryo Maruyama
PDF
JavaScript基礎勉強会
by
大樹 小倉
PPTX
Java scriptの基礎
by
ManabuYoneyama
PDF
ECMAScript 6 Features(PDF 版)
by
taskie
PPTX
前期講座08
by
Takenori Nakagawa
PDF
JavaScript (ECMAScript) 2013
by
dynamis
PDF
Javascripでオブジェクト指向
by
1000 VICKY
PPT
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門
by
Kazunori Tatsuki
PDF
そしてjsの基礎へ戻る#4
by
Shingo Inoue
PDF
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 1 章
by
Narimichi Takamura
PDF
JavaScript 講習会 #1
by
Susisu
PDF
traceur-compilerで ECMAScript6を体験
by
Toshio Ehara
Kanazawa.js.Next
by
dynamis
JavaScriptことはじめ
by
Yuki Ishikawa
これからのJavaScriptー関数型プログラミングとECMAScript6
by
TanUkkii
JavaScript.Next
by
dynamis
JavaScriptクイックスタート
by
Shumpei Shiraishi
JSer Class #1
by
mizuky fujitani
JavaScriptの落とし穴
by
ikdysfm
Nds meetup8 lt
by
ushiboy
JavaScript入門
by
Ryo Maruyama
JavaScript基礎勉強会
by
大樹 小倉
Java scriptの基礎
by
ManabuYoneyama
ECMAScript 6 Features(PDF 版)
by
taskie
前期講座08
by
Takenori Nakagawa
JavaScript (ECMAScript) 2013
by
dynamis
Javascripでオブジェクト指向
by
1000 VICKY
[A 3]SSJSでも使える!Javascriptでオブジェクト指向プログラミング入門
by
Kazunori Tatsuki
そしてjsの基礎へ戻る#4
by
Shingo Inoue
【Topotal輪読会】JavaScript で学ぶ関数型プログラミング 1 章
by
Narimichi Takamura
JavaScript 講習会 #1
by
Susisu
traceur-compilerで ECMAScript6を体験
by
Toshio Ehara
More from Teppei Sato
PDF
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
by
Teppei Sato
PDF
サイボウズの給与交渉戦 - Boss Side -
by
Teppei Sato
PDF
Recent compat-table issues
by
Teppei Sato
PDF
kintoneがAWSで目指すDevOpsQAな開発
by
Teppei Sato
PDF
Automated Dependency Updates with Renovate
by
Teppei Sato
PDF
君はyarn.lockをコミットしているか?
by
Teppei Sato
PDF
サイボウズの開発を支えるKAIZEN文化
by
Teppei Sato
PDF
SPAと覚悟
by
Teppei Sato
PDF
Closure Compiler Updates for ES6
by
Teppei Sato
PDF
ES6 in Practice
by
Teppei Sato
PDF
Our wish to Flowtype
by
Teppei Sato
PDF
Flowtype Introduction
by
Teppei Sato
PDF
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
by
Teppei Sato
PDF
本当のClosure Compilerをお見せしますよ。
by
Teppei Sato
PDF
DockerがYAVAY!
by
Teppei Sato
PDF
JavaScript Unit Test Why? What? How?
by
Teppei Sato
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
by
Teppei Sato
サイボウズの給与交渉戦 - Boss Side -
by
Teppei Sato
Recent compat-table issues
by
Teppei Sato
kintoneがAWSで目指すDevOpsQAな開発
by
Teppei Sato
Automated Dependency Updates with Renovate
by
Teppei Sato
君はyarn.lockをコミットしているか?
by
Teppei Sato
サイボウズの開発を支えるKAIZEN文化
by
Teppei Sato
SPAと覚悟
by
Teppei Sato
Closure Compiler Updates for ES6
by
Teppei Sato
ES6 in Practice
by
Teppei Sato
Our wish to Flowtype
by
Teppei Sato
Flowtype Introduction
by
Teppei Sato
Closure CompilerのES6対応 あるいはES6時代のAltJS生存戦略
by
Teppei Sato
本当のClosure Compilerをお見せしますよ。
by
Teppei Sato
DockerがYAVAY!
by
Teppei Sato
JavaScript Unit Test Why? What? How?
by
Teppei Sato
Effective JavaScript Ch.1
1.
Effective JavaScript
第1章 @teppeis 2013/04/01 サイボウズ社内勉強会
2.
ファーストクラスの関数と、 オブジェクトプロトタイプという、 2つの大きな目標は別として、 そういう実現困難な要求と、 すさまじく加熱したスケジュールに対して、 僕が採用したソリューションは、 JavaScriptを最初から 極度に柔軟なものにしておくことだった。
∼ブレンダン・アイクによる序文∼ より
3.
極度に 柔軟!
4.
JavaScriptは言語でできる ことをやりたい放題やるとチー ム開発とか絶対無理だよ。 規律を持って開発しましょう。 => Effective JavaScript!
5.
余談 • 類書に『JavaScript: The
Good Parts』というのがあってこれも良い 本だけど、原理主義すぎて盲信すると 副作用があります。いろいろ分かって から読むとニヤニヤできる。 • 『Effective JavaScript』の方は 安心して参考にできるプラクティスを 収録している印象です。
6.
第1章 JavaScriptに慣れ親しむ
7.
項目1
どのJavaScriptを 使っているのかを意識しよう
8.
JavaScriptの歴史 • ECMAScirpt
3 <= IE8- • ECMAScript 4 <= 黒歴史 • ECMAScript 5 <= モダンブラウザ • ECMAScript 6 <= 策定中
9.
ES3とES5 • 実際使うときによく間違えるのが、 Arrayのメソッドとか。
ES3にはmapとかfilerとかないよ。 • ES5 compatibility tableで確認で きる。 http://kangax.github.com/es5-compat-table/
10.
strictモード
function hoge() { "use strict"; // something... }
11.
strictモード • いろいろstrictになる。
• 最近は割と常識になってきた。 • 参考: • Strict モード - JavaScript ¦ MDN https://developer.mozilla.org/ja/docs/JavaScript/Reference/Functions_and_function_scope/Strict_mode • arguments.calleeがstrictモードで禁止な理由 - Togetter http://togetter.com/li/215907 • function - Why was the arguments.callee.caller property deprecated in JavaScript? - Stack Overflow http://stackoverflow.com/questions/103598/why-was-the-arguments-callee-caller-property-deprecated-in-javascript
12.
ファイル連結に注意
"use strict"; function strictFunc() { // strict code... } function nonStrictFunc() { // non-‐strict code... } • 連結したらどっちもstrict 逆に連結したらどちらもnon-strict • 即時関数で囲んで use strict しよう
13.
Closure的には? • DEBUGモードではgoog.base()な
どでarguments.callee使ってて strictモードでは動かない。 • gjslint, Closure Compilerでほと んど検出できるので、Closure世界で はstrictモードにしない。
14.
項目2 JavaScriptの浮動小数点を
理解しよう
15.
number • JSの数は倍精度浮動小数点数。 • JSにおける整数はダブルの部分集合。 •
ビット演算は、数値を32ビット符号付 き整数として扱う。 8 | 1 // 9 • 浮動小数点演算の精度に注意
16.
項目3 暗黙の型変換に注意しよう
17.
型変換 • 型エラーは暗黙の型強制で隠される • +演算子は、引数の型によって、数の加
算か文字列の連結のどちらかになる 3 + true // 4 "hoge:" + true // "hoge:true" (1 + 2) + "3" // "33" 1 + (2 + "3") // "123"
18.
NaN is not
NaN • isNaNは型強制してしまうので、 数値型以外には使えない! var str = "hoge"; isNaN(str); // true! • 「それ自身と等しくない」性質を使おう var a = NaN; a !== a; // true!
19.
未定義チェックは要注意 function do(num,
str) { // デフォルト値を設定するときによく見るコード // このままだとnum = 0やstr = ""を指定できない! num = num || 10; str = str || "default string"; // ... } // 正攻法 if (typeof num === 'undefined') { num = 10; } // null or undefinedのチェックはこれがオススメ if (num == null) { num = 10; }
20.
Falsy value in
JS • false • +0, -0 • (empty string) • NaN • null • undefined • 他はすべてtrueです。
21.
項目4 オブジェクトラッパーよりも プリミティブが好ましい
22.
プリミティブ型 • boolean • number •
string • null • undefined
23.
オブジェクトラッパー • オブジェクトラッパーは、等値演算子 (===)で比較されたときプリミティブ
値と同じ振る舞いをしない。 var s = new String('hello'); typeof s; // 'object' not 'string' s === 'hello'; // false s == 'hello'; // true var s2 = new String('hello'); s === s2; // false s == s2; // false
24.
オブジェクトラッパー • プリミティブのプロパティを取得ある いは設定すると、オブジェクトラッパ
ーが暗黙のうちに作成される。 "hello".toUpperCase(); // "HELLO" "hello".hoge = 1; "hello".hoge; // undefined (123).toString(); // '123' 123..toString(); // '123'
25.
項目5 型が異なるときに ==を使わない
26.
==演算子 • ==演算子は、引数の型が異なるとき、
分かりにくい暗黙の強制を適用される "1.0e0" == {valueOf: function() {return true;}} // true だけど、頭がいたくなる。。 • valueOfとかtoStringとかDateだ け違うとか、おおよそ人間には理解で きないルールが存在する。 http://os0x.hatenablog.com/entry/20100916/1284650917 http://d.hatena.ne.jp/sandai/20100916/p1
27.
===演算子使おう • ===演算子を使えば、比較に暗黙の強 制が関わらないことを明示できる。 •
型の異なる値を比較するときは、 明示的な型変換を自分で行うこと。
28.
項目6 セミコロン挿入の限度を学ぼう
29.
セミコロン;自動挿入ルール • 厳密には結構むずい。 a
= b /hoge/i.test(str) // a = b / hoge / i.test(str) // 自動挿入されないので正規表現が割り算に! • returnのあとに改行しちゃいけないこ とだけは覚えておこう。
30.
セミコロンの省略 • セミコロンの省略はするな(超意訳) 省略したければCoffee使え。 •
スクリプトを連結による意図しない セミコロン自動挿入に注意。 // 先頭に;を置いて連結ミスを防ぐテクニック ;(function() { // .. })();
31.
項目7 文字列は16ビットの
符号単位を並べた シーケンスとして考えよう
32.
文字列とUnicode • JavaScriptの文字列は、Unicode
の符号位置(code point)ではなく、 16ビットの符号単位(code unit) • code point が2^16未満のときは、 普通に文字列操作できますが。
33.
サロゲートペア • code point
が2^16以上のとき、 1対の符号単位(サロゲートペア)で表現 • サロゲートペアは length, charAt, charCodeAt や正規表現に影響する // " ": U+20BB7 // http://www.fileformat.info/info/unicode/char/20bb7/index.htm " ".length; // 2 " ".charCodeAt(0).toString(16); // "d842" " ".charCodeAt(1).toString(16); // "dfb7"
34.
サロゲートペア • 文字列を扱うサードパーティライブラ リには要注意。 •
開発してるアプリがサロゲートペア対 応するのか、対応してないならどんな 挙動になるのか、気をつけましょう。
35.
第1章 完
Download