SlideShare a Scribd company logo
1 of 21
Download to read offline
で、ES2015(ES6)を学ぼう!
天神LT勉強会 2015/7/3(金)
-自己紹介-
株式会社キャムの江原と申します。
Excelとかプログラムとか何かイロイロしてます。
twitter : @itokami1123
企業の経営戦略に役立つサービス「CAM MACS」を
AWSにて提供してます。
あの..
ES2015(ES6)って何?
最近(6/17)に
標準化された
ECMAScript のことです!
もっと知りたい人はこちらがオススメ!↓
Run through ES6
https://teppeis.github.io/run-through-es6/#1
つまり全てのブラウザで
(いつか)動く
チョピリかっこいいJSです!
でも、まだまだ..
ブラウザでうごきませぬ…
各ブラウザの対応状況!
https://kangax.github.io/compat-table/es6/
そこで Babel を使って
ES6を体験しましょ!
https://babeljs.io/
https://babeljs.io/repl/
手軽に Try it outで試せます
var compute = (x, y) => {

return x*y;

};



console.log(compute(2, 3));

"use strict";
 
var compute =
function compute(x, y) {
return x * y;
};
 
console.log(compute(2, 3));
Arrows
var nobitan = {

favorite: "hirune",

say(){

[1, 2, 3].forEach(

(x) => console.log(

"No.",

x,

this.favorite
)

)

}

};



nobitan.say();
"use strict";
 
var nobitan = {
favorite: "hirune",
say: function say() {
var _this = this;
 
[1, 2, 3].forEach(function (x) {
return console.log(
“No.",
x,
_this.favorite);
});
}
};
 
nobitan.say();
Arrows -Lexical this-
class Hero {

constructor(name){

this.name = name;

}



say (){

console.log(this.name + "参上");

}

}



var hero = new Hero("さうざー");

hero.say();
var _createClass = 省略・・
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError(
"Cannot call a class as a function");
}
}
var Hero = (function () {
function Hero(name) {
_classCallCheck(this, Hero);
 
this.name = name;
}
 
_createClass(Hero, [{
key: "say",
value: function say() {
console.log(this.name + "参上");
}
}]);
 
return Hero;
})();
var hero = new Hero("さうざー");
hero.say();
Classes
class Hero {

constructor(name){

this.name = name;

}



say (){

console.log(this.name + "参上");

}

}

class HokuKen extends Hero {

constructor(){

super("けんしろ");

}

say (){

console.log("お前はもう○○だ");

super.say();

}

}



var hokuken = new HokuKen();

hokuken.say();
var _createClass = 省略・・
function _classCallCheck 省略…
var _get = 省略…
function _inherits省略…
var HokuKen = (function (_Hero) {
function HokuKen() {
_classCallCheck(this, HokuKen);
_get(
Object.getPrototypeOf(HokuKen.prototype),
"constructor", this).
call(this, "けんしろ");
}
_inherits(HokuKen, _Hero);
_createClass(HokuKen, [{
key: "say",
value: function say() {
console.log("お前はもう○○だ");
_get(
Object.getPrototypeOf(
HokuKen.prototype
), "say", this).call(this);
}
}]);
return HokuKen;
})(Hero);
var hokuken = new HokuKen();
hokuken.say();
Classes -extends-
var favorite = "hirune";



var nobitan = {

favorite,

say(){

[1, 2, 3].forEach(

(x)=>console.log(

"No.",

x,

this.favorite)

)

}

};



nobitan.say();
"use strict";
 
var favorite = "hirune";
 
var nobitan = {
favorite: favorite,
say: function say() {
var _this = this;
 
[1, 2, 3].forEach(function (x) {
return console.log(
“No.",
x,
_this.favorite);
});
}
};
 
nobitan.say();
Enhanced Object Literals - Shorthand -
// Enhanced Object Literals

// Computed (dynamic) property names

var favorite = "hirune";



var nobitan = {

favorite,

say(){

[1, 2, 3].map(

(i) => {

return {
["fav-"+i]: this.favorite
};

}

).forEach(

(x)=>console.log(x)

);

}

};



nobitan.say();
"use strict";
 
function _defineProperty(obj, key, value) {
return Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true }); }
 
var favorite = "hirune";
 
var nobitan = {
favorite: favorite,
say: function say() {
var _this = this;
 
[1, 2, 3].map(function (i) {
return _defineProperty(
{},
"fav-" + i, _this.favorite);
}).forEach(function (x) {
return console.log(x);
});
}
};
 
nobitan.say();
Enhanced Object Literals - Computed (dynamic) property names -
// Enhanced Object Literals

// Computed (dynamic) property names

var favorite = "hirune";



var nobitan = {

favorite,

say(){

[1, 2, 3].map(

(i) => {

return {
["fav-"+i]: this.favorite
};

}

).forEach(

(x)=>console.log(x)

);

}

};



nobitan.say();
"use strict";
 
function _defineProperty(obj, key, value) {
return Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true }); }
 
var favorite = "hirune";
 
var nobitan = {
favorite: favorite,
say: function say() {
var _this = this;
 
[1, 2, 3].map(function (i) {
return _defineProperty(
{},
"fav-" + i, _this.favorite);
}).forEach(function (x) {
return console.log(x);
});
}
};
 
nobitan.say();
Enhanced Object Literals - Methods -
// Template Strings 



// Multiline strings

var hello = `こんちは 

せかい!`;



console.log(hello);



// Interpolate variable bindings

var name = "たろう", food = "すし";

console.log(`Hello ${name}, ${food} 食う?`);

// Template Strings
 
// Basic literal string creation
"use strict";
  
// Multiline strings
var hello = "こんちは n せかい!";
 
console.log(hello);
 
// Interpolate variable bindings
var name = "たろう",
food = "すし";
console.log(
"Hello " + name + ", " + food + " 食う?");
Template Strings
// list matching

var [goku, ,bejita] = [80,50,70];



// object matching

var {

name: targetNm,

option: { op: targetOption }

} = getTarget();



// object matching shorthand

// binds `op`, `lhs` and `rhs` in scope

var {name, option} = getTarget();



// Can be used in parameter position

function eat({food: f, times: t}) {

console.log(`${f}を${t}回食べたい`);

}

eat({food: "すし", times: 2})



// Fail-soft destructuring

var [hogehoge] = [];

// hogehoge === undefined;



// Fail-soft destructuring with defaults

var [fugafuga = "OK"] = [];

// fugafuka === "OK";
// list matching
var _ref = [80, 50, 70];
var goku = _ref[0];
var bejita = _ref[2];
 
// object matching
var _getTarget = getTarget();
var targetNm = _getTarget.name;
var targetOption = _getTarget.option.op;
 
// object matching shorthand
// binds `op`, `lhs` and `rhs` in scope
var _getTarget2 = getTarget();
var name = _getTarget2.name;
var option = _getTarget2.option;
 
// Can be used in parameter position
function eat(_ref2) {
var f = _ref2.food;
var t = _ref2.times;
console.log("" + f + "を" + t + "回食べたい");
}
eat({ food: "すし", times: 2 });
 
// Fail-soft destructuring
var _ref3 = [];
var hogehoge = _ref3[0];
  
// Fail-soft destructuring with defaults
var _ref4 = [];
var _ref4$0 = _ref4[0];
var fugafuga = _ref4$0 === undefined ? "OK" : _ref4$0;
Destructuring
// Default Params

function cal(x, y = 2) {

return x * y;

}

console.log(cal(3)); // 3*2=>6



// Rest Params

function entry(own, ...list) {

list.forEach(

(item)=>
console.log(`${own}は ${item} 持ってる`)

);

}

entry("スネヲ", "くるま", "ひこうき", "ふね");



// Spread Operator

function foge(x, y, z) {

return x * y * z;

}

console.log(foge(...[2, 3, 4])); // == 24

// Default Params
"use strict";
 
function cal(x) {
var y = arguments[1] === undefined ?
2 : arguments[1];
return x * y;
}
console.log(cal(3)); // 3*2=>6
 
// Rest Params
function entry(own) {
for (var _len = arguments.length,
list = Array(_len > 1 ? _len - 1 : 0),
_key = 1; _key < _len; _key++
) {
list[_key - 1] = arguments[_key];
}
 
list.forEach(function (item) {
return
console.log(""+own+"は "+item+" 持ってる");
});
}
entry("スネヲ", "くるま", "ひこうき", "ふね");
 
// Spread Operator
function foge(x, y, z) {
return x * y * z;
}
console.log(foge.apply(undefined, [2, 3, 4]));
// == 24
Default + Rest + Spread
//

// Let

//

var varX = 10;

let letX = 20;



{

var varX = 1;

let letX = 2;

console.log(varX, letX);

}

console.log(varX, letX);



//

// const

// 

const ON = 1;



ON = 0; // => error! 

//=> "ON" is read-only
"use strict";
 
var varX = 10;
var letX = 20;
 
{
var varX = 1;
var _letX = 2;
console.log(varX, _letX);
}
 
console.log(varX, letX);
 
//
// const
//
var ON = 1;
 
ON;
let ,const
続きは次回!

More Related Content

What's hot

ECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascriptECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascriptmatparisot
 
从问题开始,前端,架构、框架与库的实战
从问题开始,前端,架构、框架与库的实战从问题开始,前端,架构、框架与库的实战
从问题开始,前端,架构、框架与库的实战裕波 周
 
Aller plus loin avec Doctrine2
Aller plus loin avec Doctrine2Aller plus loin avec Doctrine2
Aller plus loin avec Doctrine2André Tapia
 
Effective java 摘選條目分享 2 - 泛型
Effective java   摘選條目分享 2 - 泛型Effective java   摘選條目分享 2 - 泛型
Effective java 摘選條目分享 2 - 泛型Kane Shih
 
Coffescript - счастье для javascript-разработчика
Coffescript - счастье для javascript-разработчикаCoffescript - счастье для javascript-разработчика
Coffescript - счастье для javascript-разработчикаIvan Nemytchenko
 
The Flavor of TypeScript
The Flavor of TypeScriptThe Flavor of TypeScript
The Flavor of TypeScriptDmitry Sheiko
 
EV1LSHA - Misadventures in the land of Lua
EV1LSHA - Misadventures in the land of LuaEV1LSHA - Misadventures in the land of Lua
EV1LSHA - Misadventures in the land of LuaAdam Baldwin
 
PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!Ivan Tsyganov
 
Java Script - Object-Oriented Programming
Java Script - Object-Oriented ProgrammingJava Script - Object-Oriented Programming
Java Script - Object-Oriented Programmingintive
 
Modern Mobile Web Apps
Modern Mobile Web AppsModern Mobile Web Apps
Modern Mobile Web Appsdynamis
 
jQuery for designers
jQuery for designersjQuery for designers
jQuery for designersJohan Ronsse
 
数式を構文解析した話
数式を構文解析した話数式を構文解析した話
数式を構文解析した話y1r96 Ueno
 
変態的PHPフレームワーク rhaco
変態的PHPフレームワーク rhaco変態的PHPフレームワーク rhaco
変態的PHPフレームワーク rhacomakoto tsuyuki
 
Simular un next del recordset en php de forma rudimentaria
Simular un next del recordset en php de forma rudimentariaSimular un next del recordset en php de forma rudimentaria
Simular un next del recordset en php de forma rudimentariajbersosa
 
MySQL Э.Насанжаргал
MySQL Э.НасанжаргалMySQL Э.Насанжаргал
MySQL Э.НасанжаргалSingleton
 

What's hot (20)

Mikstura it2013
Mikstura it2013Mikstura it2013
Mikstura it2013
 
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascriptECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
ECMAscript 2015 aka ES6 : à la découverte du nouveau javascript
 
从问题开始,前端,架构、框架与库的实战
从问题开始,前端,架构、框架与库的实战从问题开始,前端,架构、框架与库的实战
从问题开始,前端,架构、框架与库的实战
 
Aller plus loin avec Doctrine2
Aller plus loin avec Doctrine2Aller plus loin avec Doctrine2
Aller plus loin avec Doctrine2
 
Effective java 摘選條目分享 2 - 泛型
Effective java   摘選條目分享 2 - 泛型Effective java   摘選條目分享 2 - 泛型
Effective java 摘選條目分享 2 - 泛型
 
Java Week7 Notepad
Java Week7   NotepadJava Week7   Notepad
Java Week7 Notepad
 
Секреты WP_Query
Секреты WP_QueryСекреты WP_Query
Секреты WP_Query
 
Coffescript - счастье для javascript-разработчика
Coffescript - счастье для javascript-разработчикаCoffescript - счастье для javascript-разработчика
Coffescript - счастье для javascript-разработчика
 
The Flavor of TypeScript
The Flavor of TypeScriptThe Flavor of TypeScript
The Flavor of TypeScript
 
EV1LSHA - Misadventures in the land of Lua
EV1LSHA - Misadventures in the land of LuaEV1LSHA - Misadventures in the land of Lua
EV1LSHA - Misadventures in the land of Lua
 
PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!
 
Jquery2
Jquery2Jquery2
Jquery2
 
Java Script - Object-Oriented Programming
Java Script - Object-Oriented ProgrammingJava Script - Object-Oriented Programming
Java Script - Object-Oriented Programming
 
Modern Mobile Web Apps
Modern Mobile Web AppsModern Mobile Web Apps
Modern Mobile Web Apps
 
jQuery for designers
jQuery for designersjQuery for designers
jQuery for designers
 
Silex al límite
Silex al límiteSilex al límite
Silex al límite
 
数式を構文解析した話
数式を構文解析した話数式を構文解析した話
数式を構文解析した話
 
変態的PHPフレームワーク rhaco
変態的PHPフレームワーク rhaco変態的PHPフレームワーク rhaco
変態的PHPフレームワーク rhaco
 
Simular un next del recordset en php de forma rudimentaria
Simular un next del recordset en php de forma rudimentariaSimular un next del recordset en php de forma rudimentaria
Simular un next del recordset en php de forma rudimentaria
 
MySQL Э.Насанжаргал
MySQL Э.НасанжаргалMySQL Э.Насанжаргал
MySQL Э.Насанжаргал
 

Viewers also liked

今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おうHayashi Yuichi
 
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
覚醒JavaScript  -ES6で作るIsomophicアプリケーション-覚醒JavaScript  -ES6で作るIsomophicアプリケーション-
覚醒JavaScript -ES6で作るIsomophicアプリケーション-Oonishi Keitarou
 
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。Yutaka Horikawa
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶdcubeio
 
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについてNobukazu Hanada
 
Using JavaScript ES2015 (ES6), ES2016, ES2017 in production
Using JavaScript ES2015 (ES6), ES2016, ES2017 in productionUsing JavaScript ES2015 (ES6), ES2016, ES2017 in production
Using JavaScript ES2015 (ES6), ES2016, ES2017 in productionAnže Žnidaršič
 
ES6時代におけるWeb開発者とセキュリティ業界の乖離
ES6時代におけるWeb開発者とセキュリティ業界の乖離ES6時代におけるWeb開発者とセキュリティ業界の乖離
ES6時代におけるWeb開発者とセキュリティ業界の乖離Yosuke HASEGAWA
 
ES6,7で書ける JavaScript
ES6,7で書ける JavaScriptES6,7で書ける JavaScript
ES6,7で書ける JavaScriptShin Sekaryo
 
約物アキを調整するjQueryプラグインを作ってみた
約物アキを調整するjQueryプラグインを作ってみた約物アキを調整するjQueryプラグインを作ってみた
約物アキを調整するjQueryプラグインを作ってみた祐磨 堀
 
ゆるく学ぼう!現在のフロントエンドまとめ
ゆるく学ぼう!現在のフロントエンドまとめゆるく学ぼう!現在のフロントエンドまとめ
ゆるく学ぼう!現在のフロントエンドまとめ将一 深見
 
サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズのフロントエンド開発 現在とこれからの挑戦サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズのフロントエンド開発 現在とこれからの挑戦Teppei Sato
 

Viewers also liked (15)

今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう今すぐブラウザでES6を使おう
今すぐブラウザでES6を使おう
 
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
覚醒JavaScript  -ES6で作るIsomophicアプリケーション-覚醒JavaScript  -ES6で作るIsomophicアプリケーション-
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
 
フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。フロントエンドの技術を刷新した話し。
フロントエンドの技術を刷新した話し。
 
おっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶおっさんES6/ES2015,React.jsを学ぶ
おっさんES6/ES2015,React.jsを学ぶ
 
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
現在のWebフロントエンドの現状と愚痴と、それに対するHaxeフロントエンドライブラリMageについて
 
Lets start-react
Lets start-reactLets start-react
Lets start-react
 
Using JavaScript ES2015 (ES6), ES2016, ES2017 in production
Using JavaScript ES2015 (ES6), ES2016, ES2017 in productionUsing JavaScript ES2015 (ES6), ES2016, ES2017 in production
Using JavaScript ES2015 (ES6), ES2016, ES2017 in production
 
ES6時代におけるWeb開発者とセキュリティ業界の乖離
ES6時代におけるWeb開発者とセキュリティ業界の乖離ES6時代におけるWeb開発者とセキュリティ業界の乖離
ES6時代におけるWeb開発者とセキュリティ業界の乖離
 
ES6,7で書ける JavaScript
ES6,7で書ける JavaScriptES6,7で書ける JavaScript
ES6,7で書ける JavaScript
 
約物アキを調整するjQueryプラグインを作ってみた
約物アキを調整するjQueryプラグインを作ってみた約物アキを調整するjQueryプラグインを作ってみた
約物アキを調整するjQueryプラグインを作ってみた
 
ゆるく学ぼう!現在のフロントエンドまとめ
ゆるく学ぼう!現在のフロントエンドまとめゆるく学ぼう!現在のフロントエンドまとめ
ゆるく学ぼう!現在のフロントエンドまとめ
 
Webpack slides
Webpack slidesWebpack slides
Webpack slides
 
Effective ES6
Effective ES6Effective ES6
Effective ES6
 
ES6 in Practice
ES6 in PracticeES6 in Practice
ES6 in Practice
 
サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズのフロントエンド開発 現在とこれからの挑戦サイボウズのフロントエンド開発 現在とこれからの挑戦
サイボウズのフロントエンド開発 現在とこれからの挑戦
 

More from Toshio Ehara

iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?Toshio Ehara
 
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料Toshio Ehara
 
Java電卓勉強会資料
Java電卓勉強会資料Java電卓勉強会資料
Java電卓勉強会資料Toshio Ehara
 
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化Toshio Ehara
 
traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験Toshio Ehara
 
traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験Toshio Ehara
 
AngularJS入門の巻2
AngularJS入門の巻2AngularJS入門の巻2
AngularJS入門の巻2Toshio Ehara
 
JenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っていますJenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っていますToshio Ehara
 
AngularJS入門の巻
AngularJS入門の巻AngularJS入門の巻
AngularJS入門の巻Toshio Ehara
 
AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。Toshio Ehara
 
AngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃおAngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃおToshio Ehara
 
HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -Toshio Ehara
 
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!Toshio Ehara
 
福岡のIT勉強会情報の集め方(LT資料)
福岡のIT勉強会情報の集め方(LT資料)福岡のIT勉強会情報の集め方(LT資料)
福岡のIT勉強会情報の集め方(LT資料)Toshio Ehara
 
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてBACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてToshio Ehara
 
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)Toshio Ehara
 
JavaScriptのテストコード 一緒に勉強しませんか??
JavaScriptのテストコード 一緒に勉強しませんか??JavaScriptのテストコード 一緒に勉強しませんか??
JavaScriptのテストコード 一緒に勉強しませんか??Toshio Ehara
 
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜Toshio Ehara
 
LT Leap MotionとJavaScriptで遊ぼう!
LT Leap MotionとJavaScriptで遊ぼう!LT Leap MotionとJavaScriptで遊ぼう!
LT Leap MotionとJavaScriptで遊ぼう!Toshio Ehara
 
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~Toshio Ehara
 

More from Toshio Ehara (20)

iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?
 
Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料Java初心者勉強会(2015/08/07)資料
Java初心者勉強会(2015/08/07)資料
 
Java電卓勉強会資料
Java電卓勉強会資料Java電卓勉強会資料
Java電卓勉強会資料
 
AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化AngularJSで業務システムUI部品化
AngularJSで業務システムUI部品化
 
traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験traceur-compilerで ECMAScript6を体験
traceur-compilerで ECMAScript6を体験
 
traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験traceur-compilerで未来のJavaScriptを体験
traceur-compilerで未来のJavaScriptを体験
 
AngularJS入門の巻2
AngularJS入門の巻2AngularJS入門の巻2
AngularJS入門の巻2
 
JenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っていますJenkinsをJava開発でこんな感じで使っています
JenkinsをJava開発でこんな感じで使っています
 
AngularJS入門の巻
AngularJS入門の巻AngularJS入門の巻
AngularJS入門の巻
 
AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。AngularJS+TypeScriptを試してみた。
AngularJS+TypeScriptを試してみた。
 
AngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃおAngularJSのDirectiveで俺俺タグつくっちゃお
AngularJSのDirectiveで俺俺タグつくっちゃお
 
HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -HTML5のCanvas入門 - Img画像を編集してみよう -
HTML5のCanvas入門 - Img画像を編集してみよう -
 
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
 
福岡のIT勉強会情報の集め方(LT資料)
福岡のIT勉強会情報の集め方(LT資料)福岡のIT勉強会情報の集め方(LT資料)
福岡のIT勉強会情報の集め方(LT資料)
 
BACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発についてBACKBONE.JSによるWebアプリケーション開発について
BACKBONE.JSによるWebアプリケーション開発について
 
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
 
JavaScriptのテストコード 一緒に勉強しませんか??
JavaScriptのテストコード 一緒に勉強しませんか??JavaScriptのテストコード 一緒に勉強しませんか??
JavaScriptのテストコード 一緒に勉強しませんか??
 
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
 
LT Leap MotionとJavaScriptで遊ぼう!
LT Leap MotionとJavaScriptで遊ぼう!LT Leap MotionとJavaScriptで遊ぼう!
LT Leap MotionとJavaScriptで遊ぼう!
 
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
 

BABELで、ES2015(ES6)を学ぼう!

  • 10. var compute = (x, y) => {
 return x*y;
 };
 
 console.log(compute(2, 3));
 "use strict";   var compute = function compute(x, y) { return x * y; };   console.log(compute(2, 3)); Arrows
  • 11. var nobitan = {
 favorite: "hirune",
 say(){
 [1, 2, 3].forEach(
 (x) => console.log(
 "No.",
 x,
 this.favorite )
 )
 }
 };
 
 nobitan.say(); "use strict";   var nobitan = { favorite: "hirune", say: function say() { var _this = this;   [1, 2, 3].forEach(function (x) { return console.log( “No.", x, _this.favorite); }); } };   nobitan.say(); Arrows -Lexical this-
  • 12. class Hero {
 constructor(name){
 this.name = name;
 }
 
 say (){
 console.log(this.name + "参上");
 }
 }
 
 var hero = new Hero("さうざー");
 hero.say(); var _createClass = 省略・・ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError( "Cannot call a class as a function"); } } var Hero = (function () { function Hero(name) { _classCallCheck(this, Hero);   this.name = name; }   _createClass(Hero, [{ key: "say", value: function say() { console.log(this.name + "参上"); } }]);   return Hero; })(); var hero = new Hero("さうざー"); hero.say(); Classes
  • 13. class Hero {
 constructor(name){
 this.name = name;
 }
 
 say (){
 console.log(this.name + "参上");
 }
 }
 class HokuKen extends Hero {
 constructor(){
 super("けんしろ");
 }
 say (){
 console.log("お前はもう○○だ");
 super.say();
 }
 }
 
 var hokuken = new HokuKen();
 hokuken.say(); var _createClass = 省略・・ function _classCallCheck 省略… var _get = 省略… function _inherits省略… var HokuKen = (function (_Hero) { function HokuKen() { _classCallCheck(this, HokuKen); _get( Object.getPrototypeOf(HokuKen.prototype), "constructor", this). call(this, "けんしろ"); } _inherits(HokuKen, _Hero); _createClass(HokuKen, [{ key: "say", value: function say() { console.log("お前はもう○○だ"); _get( Object.getPrototypeOf( HokuKen.prototype ), "say", this).call(this); } }]); return HokuKen; })(Hero); var hokuken = new HokuKen(); hokuken.say(); Classes -extends-
  • 14. var favorite = "hirune";
 
 var nobitan = {
 favorite,
 say(){
 [1, 2, 3].forEach(
 (x)=>console.log(
 "No.",
 x,
 this.favorite)
 )
 }
 };
 
 nobitan.say(); "use strict";   var favorite = "hirune";   var nobitan = { favorite: favorite, say: function say() { var _this = this;   [1, 2, 3].forEach(function (x) { return console.log( “No.", x, _this.favorite); }); } };   nobitan.say(); Enhanced Object Literals - Shorthand -
  • 15. // Enhanced Object Literals
 // Computed (dynamic) property names
 var favorite = "hirune";
 
 var nobitan = {
 favorite,
 say(){
 [1, 2, 3].map(
 (i) => {
 return { ["fav-"+i]: this.favorite };
 }
 ).forEach(
 (x)=>console.log(x)
 );
 }
 };
 
 nobitan.say(); "use strict";   function _defineProperty(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); }   var favorite = "hirune";   var nobitan = { favorite: favorite, say: function say() { var _this = this;   [1, 2, 3].map(function (i) { return _defineProperty( {}, "fav-" + i, _this.favorite); }).forEach(function (x) { return console.log(x); }); } };   nobitan.say(); Enhanced Object Literals - Computed (dynamic) property names -
  • 16. // Enhanced Object Literals
 // Computed (dynamic) property names
 var favorite = "hirune";
 
 var nobitan = {
 favorite,
 say(){
 [1, 2, 3].map(
 (i) => {
 return { ["fav-"+i]: this.favorite };
 }
 ).forEach(
 (x)=>console.log(x)
 );
 }
 };
 
 nobitan.say(); "use strict";   function _defineProperty(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); }   var favorite = "hirune";   var nobitan = { favorite: favorite, say: function say() { var _this = this;   [1, 2, 3].map(function (i) { return _defineProperty( {}, "fav-" + i, _this.favorite); }).forEach(function (x) { return console.log(x); }); } };   nobitan.say(); Enhanced Object Literals - Methods -
  • 17. // Template Strings 
 
 // Multiline strings
 var hello = `こんちは 
 せかい!`;
 
 console.log(hello);
 
 // Interpolate variable bindings
 var name = "たろう", food = "すし";
 console.log(`Hello ${name}, ${food} 食う?`);
 // Template Strings   // Basic literal string creation "use strict";    // Multiline strings var hello = "こんちは n せかい!";   console.log(hello);   // Interpolate variable bindings var name = "たろう", food = "すし"; console.log( "Hello " + name + ", " + food + " 食う?"); Template Strings
  • 18. // list matching
 var [goku, ,bejita] = [80,50,70];
 
 // object matching
 var {
 name: targetNm,
 option: { op: targetOption }
 } = getTarget();
 
 // object matching shorthand
 // binds `op`, `lhs` and `rhs` in scope
 var {name, option} = getTarget();
 
 // Can be used in parameter position
 function eat({food: f, times: t}) {
 console.log(`${f}を${t}回食べたい`);
 }
 eat({food: "すし", times: 2})
 
 // Fail-soft destructuring
 var [hogehoge] = [];
 // hogehoge === undefined;
 
 // Fail-soft destructuring with defaults
 var [fugafuga = "OK"] = [];
 // fugafuka === "OK"; // list matching var _ref = [80, 50, 70]; var goku = _ref[0]; var bejita = _ref[2];   // object matching var _getTarget = getTarget(); var targetNm = _getTarget.name; var targetOption = _getTarget.option.op;   // object matching shorthand // binds `op`, `lhs` and `rhs` in scope var _getTarget2 = getTarget(); var name = _getTarget2.name; var option = _getTarget2.option;   // Can be used in parameter position function eat(_ref2) { var f = _ref2.food; var t = _ref2.times; console.log("" + f + "を" + t + "回食べたい"); } eat({ food: "すし", times: 2 });   // Fail-soft destructuring var _ref3 = []; var hogehoge = _ref3[0];    // Fail-soft destructuring with defaults var _ref4 = []; var _ref4$0 = _ref4[0]; var fugafuga = _ref4$0 === undefined ? "OK" : _ref4$0; Destructuring
  • 19. // Default Params
 function cal(x, y = 2) {
 return x * y;
 }
 console.log(cal(3)); // 3*2=>6
 
 // Rest Params
 function entry(own, ...list) {
 list.forEach(
 (item)=> console.log(`${own}は ${item} 持ってる`)
 );
 }
 entry("スネヲ", "くるま", "ひこうき", "ふね");
 
 // Spread Operator
 function foge(x, y, z) {
 return x * y * z;
 }
 console.log(foge(...[2, 3, 4])); // == 24
 // Default Params "use strict";   function cal(x) { var y = arguments[1] === undefined ? 2 : arguments[1]; return x * y; } console.log(cal(3)); // 3*2=>6   // Rest Params function entry(own) { for (var _len = arguments.length, list = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++ ) { list[_key - 1] = arguments[_key]; }   list.forEach(function (item) { return console.log(""+own+"は "+item+" 持ってる"); }); } entry("スネヲ", "くるま", "ひこうき", "ふね");   // Spread Operator function foge(x, y, z) { return x * y * z; } console.log(foge.apply(undefined, [2, 3, 4])); // == 24 Default + Rest + Spread
  • 20. //
 // Let
 //
 var varX = 10;
 let letX = 20;
 
 {
 var varX = 1;
 let letX = 2;
 console.log(varX, letX);
 }
 console.log(varX, letX);
 
 //
 // const
 // 
 const ON = 1;
 
 ON = 0; // => error! 
 //=> "ON" is read-only "use strict";   var varX = 10; var letX = 20;   { var varX = 1; var _letX = 2; console.log(varX, _letX); }   console.log(varX, letX);   // // const // var ON = 1;   ON; let ,const