Java script.trend(spec)

dynamis
dynamis CTO at WebDINO (ex Mozilla Japan)
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)
1 of 71

Recommended

Modern Mobile Web Apps by
Modern Mobile Web AppsModern Mobile Web Apps
Modern Mobile Web Appsdynamis
3.3K views58 slides
Progressive Mobile Web Apps by
Progressive Mobile Web AppsProgressive Mobile Web Apps
Progressive Mobile Web Appsdynamis
4K views60 slides
Dart != JavaScript by
Dart != JavaScriptDart != JavaScript
Dart != JavaScriptChristian Grobmeier
4.1K views45 slides
Dart und JavaScript by
Dart und JavaScriptDart und JavaScript
Dart und JavaScriptChristian Grobmeier
1.9K views49 slides
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips by
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tipsOpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tipsHo Kim
3K views76 slides
Rubyslava2102 by
Rubyslava2102Rubyslava2102
Rubyslava2102Marius Sajgalik
5.7K views24 slides

More Related Content

What's hot

JavaScript Assíncrono by
JavaScript AssíncronoJavaScript Assíncrono
JavaScript AssíncronoNatã Barbosa
286 views11 slides
Discover ServiceWorker by
Discover ServiceWorkerDiscover ServiceWorker
Discover ServiceWorkerSandro Paganotti
1.3K views13 slides
Тененёв Анатолий, Boost.Asio в алгоритмической торговле by
Тененёв Анатолий, Boost.Asio в алгоритмической торговлеТененёв Анатолий, Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговлеPlatonov Sergey
1K views20 slides
ECMAScript 6 im Produktivbetrieb by
ECMAScript 6 im ProduktivbetriebECMAScript 6 im Produktivbetrieb
ECMAScript 6 im ProduktivbetriebSebastian Springer
803 views85 slides
Testování prakticky by
Testování praktickyTestování prakticky
Testování praktickyFilip Procházka
1.6K views47 slides
Collection pipeline par Mathieu Godart by
Collection pipeline par  Mathieu GodartCollection pipeline par  Mathieu Godart
Collection pipeline par Mathieu GodartCocoaHeads France
6.8K views21 slides

What's hot(20)

Тененёв Анатолий, Boost.Asio в алгоритмической торговле by Platonov Sergey
Тененёв Анатолий, Boost.Asio в алгоритмической торговлеТененёв Анатолий, Boost.Asio в алгоритмической торговле
Тененёв Анатолий, Boost.Asio в алгоритмической торговле
Platonov Sergey1K views
Collection pipeline par Mathieu Godart by CocoaHeads France
Collection pipeline par  Mathieu GodartCollection pipeline par  Mathieu Godart
Collection pipeline par Mathieu Godart
CocoaHeads France6.8K views
ECMA2015 INSIDE by Jun Ho Lee
ECMA2015 INSIDEECMA2015 INSIDE
ECMA2015 INSIDE
Jun Ho Lee1.3K views
Java Script - Object-Oriented Programming by intive
Java Script - Object-Oriented ProgrammingJava Script - Object-Oriented Programming
Java Script - Object-Oriented Programming
intive1.2K views
Invoke y como poner en marcha un entorno de trabajo by NaN-tic
Invoke y como poner en marcha un entorno de trabajoInvoke y como poner en marcha un entorno de trabajo
Invoke y como poner en marcha un entorno de trabajo
NaN-tic592 views
Node.JS by eibaan
Node.JSNode.JS
Node.JS
eibaan1.9K views
jQuery for designers by Johan Ronsse
jQuery for designersjQuery for designers
jQuery for designers
Johan Ronsse1.2K views
Introduction to Service Worker by Shogo Sensui
Introduction to Service WorkerIntroduction to Service Worker
Introduction to Service Worker
Shogo Sensui1.4K views
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017 by devCAT Studio, NEXON
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
PyconRu 2016. Осторожно, DSL! by Ivan Tsyganov
PyconRu 2016. Осторожно, DSL!PyconRu 2016. Осторожно, DSL!
PyconRu 2016. Осторожно, DSL!
Ivan Tsyganov783 views
Фатальный недостаток Node.js by Oleksii Okhrymenko
Фатальный недостаток Node.jsФатальный недостаток Node.js
Фатальный недостаток Node.js
Oleksii Okhrymenko342 views
Rambler.iOS #8: Чистые unit-тесты by RAMBLER&Co
Rambler.iOS #8: Чистые unit-тестыRambler.iOS #8: Чистые unit-тесты
Rambler.iOS #8: Чистые unit-тесты
RAMBLER&Co666 views
Devel::NYTProf by clkao
Devel::NYTProfDevel::NYTProf
Devel::NYTProf
clkao2.1K views

Viewers also liked

現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumi by
現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumi現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumi
現場から変えた“サービスの作り方” -何を作るのかではなくなぜ作るのか- #devsumiYahoo!デベロッパーネットワーク
11.5K views147 slides
HTTPとサーバ技術の最新動向 by
HTTPとサーバ技術の最新動向HTTPとサーバ技術の最新動向
HTTPとサーバ技術の最新動向Kazuho Oku
44.3K views91 slides
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi by
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumiリアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumiYuta Okamoto
33.9K views98 slides
デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記 by
デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記
デブサミ2016 | 日本発IoTプラットフォームビジネスへの挑戦 SORACOM 立ち上げ格闘記SORACOM,INC
16.5K views124 slides
How to develop a huge Single Page Application by
How to develop a huge Single Page ApplicationHow to develop a huge Single Page Application
How to develop a huge Single Page ApplicationNaoki Yamada
3.2K views65 slides
マイクロサービス時代の動画配信基Ruby×go=∞ by
マイクロサービス時代の動画配信基Ruby×go=∞マイクロサービス時代の動画配信基Ruby×go=∞
マイクロサービス時代の動画配信基Ruby×go=∞DMM.com
14.8K views105 slides

Viewers also liked(20)

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

More from dynamis

HTTP and 5G (fixed1) by
HTTP and 5G (fixed1)HTTP and 5G (fixed1)
HTTP and 5G (fixed1)dynamis
18.2K views110 slides
HTTP and 5G by
HTTP and 5GHTTP and 5G
HTTP and 5Gdynamis
1.9K views110 slides
HTTP and 5G partial draft by
HTTP and 5G partial draftHTTP and 5G partial draft
HTTP and 5G partial draftdynamis
9K views39 slides
Web App Platform Strategy by
Web App Platform StrategyWeb App Platform Strategy
Web App Platform Strategydynamis
5.6K views70 slides
HTML5 & Renesas RZ/G by
HTML5 & Renesas RZ/GHTML5 & Renesas RZ/G
HTML5 & Renesas RZ/Gdynamis
656 views84 slides
Life of html5 (osaka) by
Life of html5 (osaka)Life of html5 (osaka)
Life of html5 (osaka)dynamis
1.2K views62 slides

More from dynamis (20)

HTTP and 5G (fixed1) by dynamis
HTTP and 5G (fixed1)HTTP and 5G (fixed1)
HTTP and 5G (fixed1)
dynamis 18.2K views
HTTP and 5G by dynamis
HTTP and 5GHTTP and 5G
HTTP and 5G
dynamis 1.9K views
HTTP and 5G partial draft by dynamis
HTTP and 5G partial draftHTTP and 5G partial draft
HTTP and 5G partial draft
dynamis 9K views
Web App Platform Strategy by dynamis
Web App Platform StrategyWeb App Platform Strategy
Web App Platform Strategy
dynamis 5.6K views
HTML5 & Renesas RZ/G by dynamis
HTML5 & Renesas RZ/GHTML5 & Renesas RZ/G
HTML5 & Renesas RZ/G
dynamis 656 views
Life of html5 (osaka) by dynamis
Life of html5 (osaka)Life of html5 (osaka)
Life of html5 (osaka)
dynamis 1.2K views
Web updates 2017 by dynamis
Web updates 2017Web updates 2017
Web updates 2017
dynamis 11.3K views
Life of HTML5 by dynamis
Life of HTML5Life of HTML5
Life of HTML5
dynamis 1.7K views
Browsers in IoT Era by dynamis
Browsers in IoT EraBrowsers in IoT Era
Browsers in IoT Era
dynamis 1.6K views
New Norm of HTML5 by dynamis
New Norm of HTML5New Norm of HTML5
New Norm of HTML5
dynamis 1.9K views
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06) by dynamis
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
Edge Web Technologies and Browser Vendors (Updated on 2016/09/06)
dynamis 7.1K views
OSC2016.Enterprise Lightnig Talk by dynamis
OSC2016.Enterprise Lightnig TalkOSC2016.Enterprise Lightnig Talk
OSC2016.Enterprise Lightnig Talk
dynamis 893 views
Demo for Gecko Embedded by dynamis
Demo for Gecko EmbeddedDemo for Gecko Embedded
Demo for Gecko Embedded
dynamis 777 views
Project Gecko Embedded by dynamis
Project Gecko EmbeddedProject Gecko Embedded
Project Gecko Embedded
dynamis 1.2K views
The New Norm of The Web by dynamis
The New Norm of The WebThe New Norm of The Web
The New Norm of The Web
dynamis 3.2K views
Web Tech & Architecture by dynamis
Web Tech & ArchitectureWeb Tech & Architecture
Web Tech & Architecture
dynamis 2.4K views
Data Privacy meeting by dynamis
Data Privacy meetingData Privacy meeting
Data Privacy meeting
dynamis 1.6K views
Firefox OS TV by dynamis
Firefox OS TVFirefox OS TV
Firefox OS TV
dynamis 3K views
Inspect Hack Ignite! by dynamis
Inspect Hack Ignite!Inspect Hack Ignite!
Inspect Hack Ignite!
dynamis 2.4K views
Years with JavaScript.Next by dynamis
Years with JavaScript.NextYears with JavaScript.Next
Years with JavaScript.Next
dynamis 3K views

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.