タグ

ECMAScriptに関するwakuworksのブックマーク (44)

  • ES2017の新機能「async / await」でPromise(非同期処理)をスッキリ書く

    いよいよECMAScript(ES2017 / ES8)のリリースが来月(2017年6月)に迫ってきました。すでに仕様は固まり、あとは承認を待つだけの状態となっているようです。ES2017の目玉機能のひとつが、今回紹介する「async/await」です。Promiseを使った処理をすっきり書くことができるようになります。async/awaitはすでに多くのモダンブラウザでは使えるようになっており、すでに利用している方もいるかと思いますが、ES2017のリリースも間近なことですし、改めて予習の意味もこめて今回async/awaitの使い方などについて紹介していきます。 はじめにJavaScriptの長年の課題として、非同期処理をいかに書くかというものがあります。かつては「コールバック地獄」という言葉が巷で溢れかえっていました。非同期処理の結果をコールバック関数の引数に渡し、そのコールバック関

    ES2017の新機能「async / await」でPromise(非同期処理)をスッキリ書く
  • ECMAScript 2015以降のJavaScriptの`this`を理解する

    この記事はJavaScriptの入門書として書いているjs-primerのthisに関する部分をベースにしています。 またjs-primerでは書けなかった現在時点(2018年1月1日)でのブラウザの挙動についてを加えたものです。 次の場所にjs-primer版(書籍版)のthisについての解説があります。 この記事と違って実際にコードを実行しながら読めるので、学習ソースとしては書籍版を推奨します。 書籍版: 関数とthis · JavaScriptの入門書 #jsprimer また、バグ報告やPRも直接リポジトリにして問題ありません。 asciidwango/js-primer: JavaScriptの入門書 おかしい場所を選択した状態で右下にある”Bug Report”ボタンを押せば、簡単にtypoとかのバグを報告できます。(PRでも歓迎) 前置きはこの辺までで、ここから編。 この記

    ECMAScript 2015以降のJavaScriptの`this`を理解する
  • class extends構文を使わずにArrayを継承する

    ES2015からclass extendsを使うことでクラスを継承することができます。 今まではビルトインのArrayやErrorの継承は内部プロパティを引き継ぐことができませんでした。 Chapter 28. Subclassing Built-ins How ECMAScript 5 still does not allow to subclass array — Perfection Kills ES2015からはclass extendsを使うと内部プロパティも含め継承できます。 lengthプロパティの動作も継承できています。 class SubArray extends Array { last(){ return this[this.length - 1]; } } var array = new SubArray(1,2,3); array.push("x"); conso

    class extends構文を使わずにArrayを継承する
  • ES2016の追加機能が決定、あるいはES7言うな問題 - teppeis blog

    今年6月に公開予定の ECMAScript 2016 (ES7) で追加される機能が以下の2つに決定した。 Array.prototype.includes Exponentiation Operator 今後は3月1日にスペックのスナップショットが切られ、6月の公開に向けた作業が始まる。 あれ、ES7ってそれだけなの?と思った方は、ぜひ ECMAScript の新しい策定プロセスを確認されたし。 標準化には2つの実装が要求される 昨年公開されたES6以降、ECMAScript の仕様策定プロセスは機能ベースで毎年リリースするスタイルになった。 細かいプロセスは 『ECMAScriptの仕様策定に関するカンニングペーパー | Web Scratch』 を参照してもらうとして、重要なポイントは、提案機能が標準化される(Stage 4になる)ためには2つ以上の実装が必要ということ。 今回のES

    ES2016の追加機能が決定、あるいはES7言うな問題 - teppeis blog
  • ES6 チートシート | POSTD

    日々の仕事の中で役に立つES2015(ES6)のティップス、コツ、ベストプラクティス、プログラムの見をご紹介します。コントリビューション歓迎です! 目次 var vs. let / const IIFEからブロックベースへ アロー関数 文字列 デストラクチャリング モジュール パラメータ クラス シンボル マップ WeakMaps Promises ジェネレータ Async/Await var vs. let / const var の他に、値を格納する let と const という識別子が新たに追加されました。 var とは異なって、 let と const はクロージャのスコープ内で最初に記述されることはありません。 var の使用例です。 var snack = 'Meow Mix'; function getFood(food) { if (food) { var snack

    ES6 チートシート | POSTD
  • JavaScriptのコードを分解してよく使われてる機能を分析する

    今年のOSS活動振り返り @ 2015 | Web ScratchJavaScript/ECMAScriptを改めてどう学べばいいのか考える azu/how-to-learn-es6とか#thinking_in_es6で考えてるやつ というのを今年考える事としてあげていました。 それを考えるために、既存のコードがどうなってるかを見てみるという話です。 具体的には既存のコードを見て、そこでどういう機能/構文が多く使われているのかが分かれば、どこを中心的に学ぶと結果が出やすくなるのではという感じです。 それを分析するためにazu/es-usage-rateというツールを書いた。 Installation 使い方 例えば、es-usage-rate自体がどういう構文を使って書かれてるかを見てみてます。 es-usage-rateは他のCLIと組み合わせて使う事を前提としてるので、 デフォルト

    JavaScriptのコードを分解してよく使われてる機能を分析する
  • .eslintrc editor

    { "env": {}, "globals": {}, "ecmaFeatures": {}, "parser": null, "rules": {} }

  • Babelで始める!モダンJavaScript開発

    Babelは最低限の機能をIE8以降で、フル機能をIE10以降でサポートします。 (実際にはIE9以降から使用することを推奨します) 当初Babelは6to5と呼ばれていましたが、ECMAScript7の仕様なども取り込むようになったため、バージョンを想定しないBabelという名前に変更されました。 Babelの特徴 Babelと同じように「トランスパイルすることでJavaScriptのコードを出力する」ツールにはTypeScriptやCoffeeScriptなどがあります。 それらと比較するとBabelは「ECMAScript標準仕様をベースにしている(*)」という特徴があります。 (*) 実際にはJSXもサポートしているため、必ずしもECMAScript標準仕様のみをサポートしているわけではありません。 このため、「いずれ標準実装される仕様を先取りできる」、「Babel自体が廃れても同

    Babelで始める!モダンJavaScript開発
  • Exploring ES6

    This book is dedicated to the impossible girl, who has taught me so much about love and life.

  • ECMAScript 6本『Exploring ES6』のオンライン版が無料で公開

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    ECMAScript 6本『Exploring ES6』のオンライン版が無料で公開
  • babelify で ES6 を試す - アカベコマイリ

    React v0.13.0 から ECMAScript 6 (以下 ES6) の class によるコンポーネント定義がサポートされた。また Node v0.12 でも一部の機能が有効となっている。このように ES6 もだいぶ身近になってき。先行学習もかねて趣味の開発では積極採用してゆきたい。 とはいえある程度は広範な環境で動いてほしい。そのため実装は ES6 でおこない実行用スクリプトは ES5 に変換したものを使用する。これを実現するため Browserify transform の babel/babelify を試す。 Babel Babel は ES6 として記述されたスクリプトを ES5 に変換するためのツールである。以前は 6to5 と呼ばれていたが諸事情により名称変更したそうだ。ES6 機能を先取りするという意味で AltJS だと TypeScript が近いのかもしれな

  • BabelとTraceurでES6末尾再帰最適化を試す - teppeis blog

    ちょっと前にBabelに末尾再帰最適化が入って話題になったけど、同じくTraceurにもv0.0.85で最適化が入ったので試してみた。 末尾再帰最適化って何? 厳密な話はそちらの筋に任せるとして、ざっくりしたストーリーはこんな感じ。 再帰って深くなるとstack overflowになっちゃう 再帰をシンプルなループ(スタックを使わないジャンプ)に変換できればstack overflowを避けられる 一般に末尾再帰であれば再帰をループに変換できる方法が知られている(これが末尾再帰最適化) 末尾再帰とは、関数の最後のステップだけで再帰呼び出しを行うこと 末尾再帰ではない再帰関数でも、CPS変換を使うことで末尾再帰関数に変換が可能 CPS変換とは、関数を結果の値を受け渡すスタイルから継続渡しスタイルに書き換えること つまり、普通の再帰関数 -> CPS変換で末尾再帰化 -> 末尾再帰最適化を適用

    BabelとTraceurでES6末尾再帰最適化を試す - teppeis blog
  • #typescript_sushi でDecoratorsについて話してきた

    #typescript_sushiに参加してきました。 ログ: #typescript_sushi - Togetterまとめ meta-sushi/guidelineに則ったイベントです。 #typescript_sushi pic.twitter.com/vDgCTuoQWZ — 過激派 (@kyo_ago) March 22, 2015 Decorators進捗 - azu LTきた #typescript_sushi pic.twitter.com/GgwszUebUg — armorik83 (@armorik83) March 22, 2015 TypeScript 1.5で実装予定、ECMAScript 7に提案される予定のそれぞれのDecoratorsについて発表してきました。 行きの電車で書いたの資料なので、大分適当ですが基的にはどちらも共通するところはあって、一種の糖

    #typescript_sushi でDecoratorsについて話してきた
  • Classes (ES6) Sample

    Available in Chrome 42+ | View on GitHub | Browse Samples Background ES6 Classes formalize the common JavaScript pattern of simulating class-like inheritance hierarchies using functions and prototypes. They are effectively simple sugaring over prototype-based OO, offering a convenient declarative form for class patterns which encourage interoperability. Classes (as shipped in Chrome) support proto

  • ES6からES5への変換ツール「6to5」が名称を「Babel」に変更

    ECMAScript 6のコードを、ECMAScript 5に変換するJavaScriptトランスパイラ「6to5」の開発者の1人であるJames Kyle氏は、公式ブログの2月15日(現地時間)付の記事において、「6to5」の名称を「Babel」に変更すると発表した。 「6to5」は、ECMAScript 6で書かれたコードをECMAScript 5に変換することによって、ブラウザごとのECMAScript 6実装レベルのバラツキを解消し、ECMAScript 6でのコード記述に専念できるようにするJavaScriptトランスパイラ。 近年は月間のダウンロード数が100万を超えるほどの人気を集めている。一方で、その名称から、ECMAScript 6の実装が十分に進んだ暁には、その役割を終えてしまうという印象も与えていた。 James Kyle氏は、公式ブログに投稿した記事で「『6to5』

    ES6からES5への変換ツール「6to5」が名称を「Babel」に変更
  • ES6時代のJavaScript - クックパッド開発者ブログ

    こんにちは会員事業部の丸山@h13i32maruです。 最近のWebフロントエンドの変化は非常に激しく、ちょっと目を離した間にどんどん新しいものが出てきますよね。そんな激しい変化の一つとしてES6という次期JavaScriptの仕様があります。このES6は現在策定中で、執筆時点ではDraft Rev31が公開されています。 JavaScriptはECMAScript(ECMA262)という仕様をもとに実装されています。 現在のモダンなWebブラウザはECMAScript 5.1th EditionをもとにしたJavaScript実行エンジンを搭載しています。 そして次のバージョンであるECMAScript 6th Editionが現在策定中で、略称としてES6という名前がよく使われます。 今回は、他の言語にはあってJavaScriptにも欲しいなと思っていた機能や、JavaScriptでよ

    ES6時代のJavaScript - クックパッド開発者ブログ
  • テンプレートリテラルが実装された - JS.next

    概要 テンプレート文字列を記述できる構文が実装された。 テンプレートリテラル 基の使い方 バッククオート『 ` 』で囲んだ文字が、文字列リテラル同様に文字列として評価される。 var t = `テンプレート` var s = "テンプレート" console.log(t) // "テンプレート" console.log(t == s) // true 改行がそのまま認識される。 var t = `テンプ レート` var s = "テンプ\n"+ "レート" console.log(t) // "テンプ⏎レート\t" console.log(t == s) // true 文字列中に変数などを埋め込む リテラル中の『${』と『}』で囲まれた部分は式として評価される。 var n = 123, f = () => 339 var t = `0${ n }45${ f() * 2 }9` v

    テンプレートリテラルが実装された - JS.next
  • より安全なJavaScriptを書くために、あったらいいよねという機能 - mizchi's blog

    こんな記事があった。 My ECMAScript 7 wishlist | NCZOnline 大雑把にいうと、制限されたgetterがほしいという意見に記事のほとんどが割かれてる。 JavaScriptのデバッグ中、一番つらいものの一つに、未定義値にアクセスしたときにundefinedが代入されており、その結果が次のアクセスにならないとわからないという点だと思う。 o = { a: () => 1, b: () => 2, c: () => 3, d: () => 4 } f = o.e // ここでエラーにならない // 30行ぐらいのコードがあって忘れるとする f() // エラー これが辛い。これを回避するためにどんな仕様が必要か。 というわけで、自分がほしいものはなんだろうと考えてみた。(注意:この記事は上の記事の翻訳記事ではない) 僕自身があんまりES harmonyの議論追っ

    より安全なJavaScriptを書くために、あったらいいよねという機能 - mizchi's blog
  • Object.observeについて - JS.next

    概要 Object.observeとは、オブジェクトの変更を監視するためのAPIであった。 ES2015,2016の候補として挙げられており、V8でデフォルトで有効にされるまでに至っていたが、 実装コストがかかる上、世のニーズとそれほど合っていないということで結局廃止された。 改めて注意勧告 これは廃止された仕様です APIの概要 提供されるメソッド Object.observe(target, callback, acceptList = defaultAcceptTypes) // targetオブジェクトを監視する // 監視するオブジェクト、変更があった時に呼ばれる関数、監視するタイプの配列を指定する // defaultAcceptTypes = ['add', 'update', 'delete', 'setPrototype', // 'reconfigure', 'prev

    Object.observeについて - JS.next
  • ES Discuss

    This site is an archive of the esdiscuss mailing list on which JavaScript syntax and features were discussed. It is no longer active, but you may still find these archived discussions interesting. Discussion has now moved to Discourse.