SlideShare a Scribd company logo
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)


HTML5
CSS3
ECMA6DOM4
HTTP/2












Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)


var gulp = require("gulp");
var babel = require("gulp-babel");
var concat = require("gulp-concat");
gulp.task("default", function () {
return gulp.src("src/**/*.js")
.pipe(babel())
.pipe(concat("all.js"))
.pipe(gulp.dest("dist"));
});
$ npm install gulp-babel babel-preset-es2015 gulp-concat
gulp-sourcemaps --save-dev
$ echo '{ "presets": ["es2015"] }' > .babelrc
var gulp = require("gulp");
var sourcemaps = require("gulp-sourcemaps");
var babel = require("gulp-babel");
var concat = require("gulp-concat");
gulp.task("default", function () {
return gulp.src("src/**/*.js")
.pipe(sourcemaps.init())
.pipe(babel())
.pipe(concat("all.js"))
.pipe(sourcemaps.write("."))
.pipe(gulp.dest("dist"));
});
import gulp from "gulp"
import babel from "gulp-babel"
import concat from "gulp-concat"
gulp.task("default", () => {
return gulp.src("src/**/*.js")
.pipe(babel())
.pipe(concat("all.js"))
.pipe(gulp.dest("dist"));
}); // これくらいのサンプルじゃ嬉しくも何ともないけど...
$ npm install babel-core babel-preset-es2015 gulp-babel
gulp-concat --save-dev
$ echo '{ "presets": ["es2015"] }' > .babelrc
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
var color = "Red"
var browsers = { fx: "Firefox", op: "Opera" }
var secret = `${color} Panda is ${browsers.fx}!
${color} Browser is ${browsers.op}!`
// ECMAScript 5th
// 文字列はひたすら + 演算子で連結
secret = color + " Panda is " + browsers.fx + "!n" +
color + " Browser is " + browsers.op + "!"
var tag = `<a href="...">Can't stop using ES6!</a>`
var re = `"[^"]*"|'[^']*'`
var list =
`<ul>
<li>firefox
<li>red panda
<li>lesser panda
<li>petit panda
</li>`
function panda(s = "lesser") {
return `${s} panda`
}
panda() === "lesser panda"
panda("red") === "red panda"
// ECMAScript 5th
function panda(s) {
if (s === undefined) {
s = "lesser"
}
return s + "panda"
}
function log(x, y, ...rest) {
console.log(x, y, rest)
}
log(1, 2, 3, 4, 5) // 1 2 [3, 4, 5]
log(0) // 0 undefinded []
// ECMAScript 5th
function log(x, y) {
var a = Array.prototype.slice.call(arguments, 2)
console.log (x, y, a)
};
var array = [ "hello", true, 7 ]
var params = [ 1, 2, ...array ]
sum(1, 2, ...params) === 9
var str = "fox"
var chars = [ ...str ] // [ "f", "o", "x" ]
// ECMAScript 5th
var array = [ "hello", true, 7 ]
var params = [ 1, 2 ].concat(array)
sum.apply(null, [ 1, 2 ].concat(params)) === 9
var str = "fox"
var chars = str.split("") // [ "f", "o", "x" ]
[a, b] = [b, a]
var [c,d] = (function f() { return [1,2]; })()
var [e,,[x,y],z=100] =[3,4,[10,20]]
var fx={ name:"Firefox", vendor:"Mozilla", ver:26 }
var ch={ name:"Chrome", vendor:"Google", ver:31 }
var browsers={ firefox: fx, chrome: ch }
var { name: n, ver: v } = fx // -> n="Firefox", v=26
(function ({ vendor: ven }) {
console.log(ven)
})(fx); // -> "Mozilla"
Java script.trend(spec)
Java script.trend(spec)
class Animal {
constructor(name) {
this.name = name;
this.hungry = true;
}
eat() {
this.hungry = false;
}
run() {
this.hungry = trye;
}
}
class LesserPanda extends Animal {
constructor(name, tail) {
super(name);
this.tail = tail;
}
}
function Animal(name) {
this.name = name;
this.hungry = true;
}
Animal.prototype.eat = function() {
this.hungry = false;
}
Animal.prototype.run = function() {
this.hungry = true;
}
function LesserPanda(name, tail) {
Animal.call(this, name);
this.tail = tail;
}
LesserPanda.prototype
= Object.create(Animal.prototype);
LesserPanda.prototype.constructor = LesserPanda;
Java script.trend(spec)
Java script.trend(spec)
{
let a = 1, b = 10;
let (a = 100, c = 300) console.log(a); // -> 100
for (let a=0; a<3; a++) {
console.log(a+b); // -> 10, 11, 12
}
console.log(a); // -> 1
}
console.log(a); // × ReferenceError: a is not defined
var browser = "Edge";
{ // block scope
let browser = "Firefox";
}
browser === "Edge";
// ECMAScript 5th
// 変数のスコープは関数スコープしか存在しなかった
var browser = "Edge";
(function(){ // function scope hack...
var browser = "Firefox";
})()
browser === "Edge";
{
function browser() { return "Edge"; }
browser() === "Edge"; // true
{
function browser() { return "Firefox"; }
browser() === "Firefox"; // true
}
browser() === "Edge"; // true
}
const browser = "Firefox";
const browser = "Internet Explorer";
browser = "Chrome";
console.log(browser); // -> "Firefox"
Java script.trend(spec)
[1,2,3].map(x => x * x);
setInterval(() => {
alert("HEY! 提督ぅー!alertしてもイイけどサー、時間と場所をわきまえな
ヨー!");
}, Math.random()*10*1000);
var factorial=((f=n=>n>1 ?n*f(n-1):1)=>(f))();
factorial(10); // 3628800
odds = evens.map(v => v + 1)
pairs = evens.map(v => ({ even: v, odd: v + 1 }))
nums = evens.map((v, i) => v + i)
halfs = evens.map(v => { return v / 2 })
// ECMAScript 5th
odds = evens.map(function (v) { return v + 1; })
pairs = evens.map(function (v) {
return { even: v, odd: v + 1 }
})
nums = evens.map(function (v, i) { return v + i; })
function Person(){
this.age = 0
setInterval(() => {
this.age++ // this は Person オブジェクト
}, 1000)
}
var p = new Person()
Java script.trend(spec)
Java script.trend(spec)
function doFirstAsync(fileurl) {
return new Promise(function(resolve,reject) {
$.ajax({
src: fileurl, dataType: "json"
}).done(function(data){
resolve(data);
});
}
}
async function task(param) {
await new Promise((resolve) => {
setTimeout(resolve,1000);
});
let first = await doFirstAsync(".../first.json")
let second = await doSecondAsync(".../second.json")
let third = await doThirdAsync(".../third.json")
// ...取得したデータを使って色々処理
};
Java script.trend(spec)






var set = new Set()

//	 集合に追加・確認・削除

set.add("Firefox")

set.add("Thunderbird")

set.add(+0);

set.add(NaN)

set.has("Firefox") 	 // ->	 true

set.has("Sunbird")	  // ->	 false

set.delete("Firefox")

set.has("Firefox")	  // ->	 false

//	 -0	 と	 +0	 は同値と見なす	 (初期実装と異なる),	 NaN	 は自身と一致

//	 初期の仕様・実装では	 -0	 と	 +0	 は区別されていたが変更された

set.has(-0)	  	 	 	 	 	 	 	 // ->	 true

set.has(NaN)	  	 	 	 	 	 	 // ->	 true	 ここが	 ===	 での比較と異なるので注意
var map = new Map()

var	 str = "Mozilla",	 obj = {}, func = function(){}

// Map	 に値を格納

map.set(str, "Firefox")

map.set(obj, "Thunderbird")

map.set(func, "Japan")

//	 キーに対応する値を取得

map.get(str)	   	 	 	 	 	 	 	 // ->	 "Firefox"

map.get(obj)	  	 	 	 	 	 	 	  // ->	 "Thunderbird"

map.get(func)	 	 	 	 	 	 	 	  // ->	 "Japan"

//	 設定したキーと引数の比較は	 ==	 ではないので注意

map.get("Mozilla")	 	 	  // ->	 "Firefox"

map.get({})	        	 	  // ->	 undefined

map.get(function(){}) // ->	 undefined
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
大規模アプリの処理速度では C 言語が圧倒的に早かった
(小規模アプリや一部ベンチ限定なら既に十分高速だった)
asm.js 導入直後で C の 2 倍遅い程度、今では数割程度の違い
(Java や C# の処理速度と同程度以上の水準に)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)


Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)
Java script.trend(spec)

More Related Content

PDF
Modern Mobile Web Apps
dynamis
 
PDF
Progressive Mobile Web Apps
dynamis
 
KEY
Dart != JavaScript
Christian Grobmeier
 
PPT
Dart und JavaScript
Christian Grobmeier
 
PPTX
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
Ho Kim
 
PPTX
Rubyslava2102
Marius Sajgalik
 
PPTX
es6.concurrency()
Ingvar Stepanyan
 
PPT
Web App Mvc
Will Gunn
 
Modern Mobile Web Apps
dynamis
 
Progressive Mobile Web Apps
dynamis
 
Dart != JavaScript
Christian Grobmeier
 
Dart und JavaScript
Christian Grobmeier
 
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
Ho Kim
 
Rubyslava2102
Marius Sajgalik
 
es6.concurrency()
Ingvar Stepanyan
 
Web App Mvc
Will Gunn
 

What's hot (20)

PPTX
JavaScript Assíncrono
Natã Barbosa
 
PDF
Discover ServiceWorker
Sandro Paganotti
 
PDF
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Platonov Sergey
 
PDF
ECMAScript 6 im Produktivbetrieb
Sebastian Springer
 
PDF
Testování prakticky
Filip Procházka
 
PDF
Collection pipeline par Mathieu Godart
CocoaHeads France
 
PDF
ECMA2015 INSIDE
Jun Ho Lee
 
PDF
Java Script - Object-Oriented Programming
intive
 
PDF
Invoke y como poner en marcha un entorno de trabajo
NaN-tic
 
PDF
Node.JS
eibaan
 
KEY
jQuery for designers
Johan Ronsse
 
PPTX
JS programowanie obiektowe
Piotr Czajkowski
 
PDF
Introduction to Service Worker
Shogo Sensui
 
PDF
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
devCAT Studio, NEXON
 
PDF
PyconRu 2016. Осторожно, DSL!
Ivan Tsyganov
 
PDF
Фатальный недостаток Node.js
Oleksii Okhrymenko
 
PDF
Rambler.iOS #8: Чистые unit-тесты
RAMBLER&Co
 
PPTX
Jquery ui, ajax
Ricardo Cavalcanti
 
PDF
PHP Profiling
Sungbum Hong
 
PDF
Devel::NYTProf
clkao
 
JavaScript Assíncrono
Natã Barbosa
 
Discover ServiceWorker
Sandro Paganotti
 
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Platonov Sergey
 
ECMAScript 6 im Produktivbetrieb
Sebastian Springer
 
Testování prakticky
Filip Procházka
 
Collection pipeline par Mathieu Godart
CocoaHeads France
 
ECMA2015 INSIDE
Jun Ho Lee
 
Java Script - Object-Oriented Programming
intive
 
Invoke y como poner en marcha un entorno de trabajo
NaN-tic
 
Node.JS
eibaan
 
jQuery for designers
Johan Ronsse
 
JS programowanie obiektowe
Piotr Czajkowski
 
Introduction to Service Worker
Shogo Sensui
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
devCAT Studio, NEXON
 
PyconRu 2016. Осторожно, DSL!
Ivan Tsyganov
 
Фатальный недостаток Node.js
Oleksii Okhrymenko
 
Rambler.iOS #8: Чистые unit-тесты
RAMBLER&Co
 
Jquery ui, ajax
Ricardo Cavalcanti
 
PHP Profiling
Sungbum Hong
 
Devel::NYTProf
clkao
 
Ad

Viewers also liked (20)

PDF
現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumi
Yahoo!デベロッパーネットワーク
 
PPTX
HTTPとサーバ技術の最新動向
Kazuho Oku
 
PDF
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
Yuta Okamoto
 
PPTX
デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記
SORACOM,INC
 
PDF
How to develop a huge Single Page Application
Naoki Yamada
 
PDF
マイクロサービス時代の動画配信基Ruby×go=∞
DMM.com
 
PDF
AWSで実現するクラウドネイティブなアプリ開発のポイント
Keisuke Nishitani
 
PDF
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo!デベロッパーネットワーク
 
PDF
Effective ES6
Teppei Sato
 
PDF
STAC 2015 自動家は見た ~自動化の現場の真実~ SIDE:マネージャ
Noriyuki Mizuno
 
PDF
ブロックチェーン技術の基本と応用の可能性
Kenji Saito
 
PDF
Docker基礎+docker0.9, 0.10概要
Kazuyuki Mori
 
PDF
「自動家は見た! 〜自動化の現場の真実〜」-システムテスト自動化カンファレンス2015「.reviewrc(おいしが)」発表枠 #stac2015
Kazuhito Miura
 
PDF
MySQL 5.7の罠があなたを狙っている
yoku0825
 
PDF
無償のVisual studioで作るクライアント アプリ
Yasuhiko Yamamoto
 
PDF
UWP アプリを JavaScript で作る 3つの方法
Yasuhiko Yamamoto
 
PDF
IT系女子集まれ!女子部カンファレンスvo.1 用スライド資料
Kazumi OHIRA
 
PDF
Selenium boot campの紹介
Nozomi Ito
 
PDF
大規模BIクラウドWebサービスの裏側
Mitch Okamoto
 
PDF
From Hacker to Programmer (w/ Webpack, Babel and React)
Joseph Chiang
 
現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumi
Yahoo!デベロッパーネットワーク
 
HTTPとサーバ技術の最新動向
Kazuho Oku
 
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
Yuta Okamoto
 
デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記
SORACOM,INC
 
How to develop a huge Single Page Application
Naoki Yamada
 
マイクロサービス時代の動画配信基Ruby×go=∞
DMM.com
 
AWSで実現するクラウドネイティブなアプリ開発のポイント
Keisuke Nishitani
 
Yahoo! JAPANが考えるテクノロジーとITエンジニアの未来 #devsumi
Yahoo!デベロッパーネットワーク
 
Effective ES6
Teppei Sato
 
STAC 2015 自動家は見た ~自動化の現場の真実~ SIDE:マネージャ
Noriyuki Mizuno
 
ブロックチェーン技術の基本と応用の可能性
Kenji Saito
 
Docker基礎+docker0.9, 0.10概要
Kazuyuki Mori
 
「自動家は見た! 〜自動化の現場の真実〜」-システムテスト自動化カンファレンス2015「.reviewrc(おいしが)」発表枠 #stac2015
Kazuhito Miura
 
MySQL 5.7の罠があなたを狙っている
yoku0825
 
無償のVisual studioで作るクライアント アプリ
Yasuhiko Yamamoto
 
UWP アプリを JavaScript で作る 3つの方法
Yasuhiko Yamamoto
 
IT系女子集まれ!女子部カンファレンスvo.1 用スライド資料
Kazumi OHIRA
 
Selenium boot campの紹介
Nozomi Ito
 
大規模BIクラウドWebサービスの裏側
Mitch Okamoto
 
From Hacker to Programmer (w/ Webpack, Babel and React)
Joseph Chiang
 
Ad

More from dynamis (20)

PDF
HTTP and 5G (fixed1)
dynamis
 
PDF
HTTP and 5G
dynamis
 
PDF
HTTP and 5G partial draft
dynamis
 
PDF
Web App Platform Strategy
dynamis
 
PDF
HTML5 & Renesas RZ/G
dynamis
 
PDF
Life of html5 (osaka)
dynamis
 
PDF
Web updates 2017
dynamis
 
PDF
Life of HTML5
dynamis
 
PDF
Browsers in IoT Era
dynamis
 
PDF
New Norm of HTML5
dynamis
 
PDF
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
dynamis
 
PDF
OSC2016.Enterprise Lightnig Talk
dynamis
 
PDF
Demo for Gecko Embedded
dynamis
 
PDF
Project Gecko Embedded
dynamis
 
PDF
The New Norm of The Web
dynamis
 
PDF
Web Tech & Architecture
dynamis
 
PDF
Data Privacy meeting
dynamis
 
PDF
Firefox OS TV
dynamis
 
PDF
Inspect Hack Ignite!
dynamis
 
PDF
Years with JavaScript.Next
dynamis
 
HTTP and 5G (fixed1)
dynamis
 
HTTP and 5G
dynamis
 
HTTP and 5G partial draft
dynamis
 
Web App Platform Strategy
dynamis
 
HTML5 & Renesas RZ/G
dynamis
 
Life of html5 (osaka)
dynamis
 
Web updates 2017
dynamis
 
Life of HTML5
dynamis
 
Browsers in IoT Era
dynamis
 
New Norm of HTML5
dynamis
 
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
dynamis
 
OSC2016.Enterprise Lightnig Talk
dynamis
 
Demo for Gecko Embedded
dynamis
 
Project Gecko Embedded
dynamis
 
The New Norm of The Web
dynamis
 
Web Tech & Architecture
dynamis
 
Data Privacy meeting
dynamis
 
Firefox OS TV
dynamis
 
Inspect Hack Ignite!
dynamis
 
Years with JavaScript.Next
dynamis
 

Java script.trend(spec)

  • 17.
  • 18. var gulp = require("gulp"); var babel = require("gulp-babel"); var concat = require("gulp-concat"); gulp.task("default", function () { return gulp.src("src/**/*.js") .pipe(babel()) .pipe(concat("all.js")) .pipe(gulp.dest("dist")); }); $ npm install gulp-babel babel-preset-es2015 gulp-concat gulp-sourcemaps --save-dev $ echo '{ "presets": ["es2015"] }' > .babelrc
  • 19. var gulp = require("gulp"); var sourcemaps = require("gulp-sourcemaps"); var babel = require("gulp-babel"); var concat = require("gulp-concat"); gulp.task("default", function () { return gulp.src("src/**/*.js") .pipe(sourcemaps.init()) .pipe(babel()) .pipe(concat("all.js")) .pipe(sourcemaps.write(".")) .pipe(gulp.dest("dist")); });
  • 20. import gulp from "gulp" import babel from "gulp-babel" import concat from "gulp-concat" gulp.task("default", () => { return gulp.src("src/**/*.js") .pipe(babel()) .pipe(concat("all.js")) .pipe(gulp.dest("dist")); }); // これくらいのサンプルじゃ嬉しくも何ともないけど... $ npm install babel-core babel-preset-es2015 gulp-babel gulp-concat --save-dev $ echo '{ "presets": ["es2015"] }' > .babelrc
  • 24. var color = "Red" var browsers = { fx: "Firefox", op: "Opera" } var secret = `${color} Panda is ${browsers.fx}! ${color} Browser is ${browsers.op}!` // ECMAScript 5th // 文字列はひたすら + 演算子で連結 secret = color + " Panda is " + browsers.fx + "!n" + color + " Browser is " + browsers.op + "!"
  • 25. var tag = `<a href="...">Can't stop using ES6!</a>` var re = `"[^"]*"|'[^']*'` var list = `<ul> <li>firefox <li>red panda <li>lesser panda <li>petit panda </li>`
  • 26. function panda(s = "lesser") { return `${s} panda` } panda() === "lesser panda" panda("red") === "red panda" // ECMAScript 5th function panda(s) { if (s === undefined) { s = "lesser" } return s + "panda" }
  • 27. function log(x, y, ...rest) { console.log(x, y, rest) } log(1, 2, 3, 4, 5) // 1 2 [3, 4, 5] log(0) // 0 undefinded [] // ECMAScript 5th function log(x, y) { var a = Array.prototype.slice.call(arguments, 2) console.log (x, y, a) };
  • 28. var array = [ "hello", true, 7 ] var params = [ 1, 2, ...array ] sum(1, 2, ...params) === 9 var str = "fox" var chars = [ ...str ] // [ "f", "o", "x" ] // ECMAScript 5th var array = [ "hello", true, 7 ] var params = [ 1, 2 ].concat(array) sum.apply(null, [ 1, 2 ].concat(params)) === 9 var str = "fox" var chars = str.split("") // [ "f", "o", "x" ]
  • 29. [a, b] = [b, a] var [c,d] = (function f() { return [1,2]; })() var [e,,[x,y],z=100] =[3,4,[10,20]]
  • 30. var fx={ name:"Firefox", vendor:"Mozilla", ver:26 } var ch={ name:"Chrome", vendor:"Google", ver:31 } var browsers={ firefox: fx, chrome: ch } var { name: n, ver: v } = fx // -> n="Firefox", v=26 (function ({ vendor: ven }) { console.log(ven) })(fx); // -> "Mozilla"
  • 33. class Animal { constructor(name) { this.name = name; this.hungry = true; } eat() { this.hungry = false; } run() { this.hungry = trye; } }
  • 34. class LesserPanda extends Animal { constructor(name, tail) { super(name); this.tail = tail; } }
  • 35. function Animal(name) { this.name = name; this.hungry = true; } Animal.prototype.eat = function() { this.hungry = false; } Animal.prototype.run = function() { this.hungry = true; }
  • 36. function LesserPanda(name, tail) { Animal.call(this, name); this.tail = tail; } LesserPanda.prototype = Object.create(Animal.prototype); LesserPanda.prototype.constructor = LesserPanda;
  • 39. { let a = 1, b = 10; let (a = 100, c = 300) console.log(a); // -> 100 for (let a=0; a<3; a++) { console.log(a+b); // -> 10, 11, 12 } console.log(a); // -> 1 } console.log(a); // × ReferenceError: a is not defined
  • 40. var browser = "Edge"; { // block scope let browser = "Firefox"; } browser === "Edge"; // ECMAScript 5th // 変数のスコープは関数スコープしか存在しなかった var browser = "Edge"; (function(){ // function scope hack... var browser = "Firefox"; })() browser === "Edge";
  • 41. { function browser() { return "Edge"; } browser() === "Edge"; // true { function browser() { return "Firefox"; } browser() === "Firefox"; // true } browser() === "Edge"; // true }
  • 42. const browser = "Firefox"; const browser = "Internet Explorer"; browser = "Chrome"; console.log(browser); // -> "Firefox"
  • 44. [1,2,3].map(x => x * x); setInterval(() => { alert("HEY! 提督ぅー!alertしてもイイけどサー、時間と場所をわきまえな ヨー!"); }, Math.random()*10*1000); var factorial=((f=n=>n>1 ?n*f(n-1):1)=>(f))(); factorial(10); // 3628800
  • 45. odds = evens.map(v => v + 1) pairs = evens.map(v => ({ even: v, odd: v + 1 })) nums = evens.map((v, i) => v + i) halfs = evens.map(v => { return v / 2 }) // ECMAScript 5th odds = evens.map(function (v) { return v + 1; }) pairs = evens.map(function (v) { return { even: v, odd: v + 1 } }) nums = evens.map(function (v, i) { return v + i; })
  • 46. function Person(){ this.age = 0 setInterval(() => { this.age++ // this は Person オブジェクト }, 1000) } var p = new Person()
  • 49. function doFirstAsync(fileurl) { return new Promise(function(resolve,reject) { $.ajax({ src: fileurl, dataType: "json" }).done(function(data){ resolve(data); }); } } async function task(param) { await new Promise((resolve) => { setTimeout(resolve,1000); }); let first = await doFirstAsync(".../first.json") let second = await doSecondAsync(".../second.json") let third = await doThirdAsync(".../third.json") // ...取得したデータを使って色々処理 };
  • 52. var set = new Set() // 集合に追加・確認・削除 set.add("Firefox") set.add("Thunderbird") set.add(+0);
 set.add(NaN) set.has("Firefox")  // -> true set.has("Sunbird")  // -> false set.delete("Firefox") set.has("Firefox")  // -> false // -0 と +0 は同値と見なす (初期実装と異なる), NaN は自身と一致 // 初期の仕様・実装では -0 と +0 は区別されていたが変更された set.has(-0)   // -> true set.has(NaN)   // -> true ここが === での比較と異なるので注意
  • 53. var map = new Map() var str = "Mozilla", obj = {}, func = function(){} // Map に値を格納 map.set(str, "Firefox") map.set(obj, "Thunderbird") map.set(func, "Japan") // キーに対応する値を取得 map.get(str)    // -> "Firefox" map.get(obj)    // -> "Thunderbird" map.get(func)  // -> "Japan" // 設定したキーと引数の比較は == ではないので注意 map.get("Mozilla")  // -> "Firefox" map.get({})          // -> undefined map.get(function(){}) // -> undefined
  • 62. asm.js 導入直後で C の 2 倍遅い程度、今では数割程度の違い (Java や C# の処理速度と同程度以上の水準に)
  • 66.