「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>JavaScript]] *目次 [#zea07f1e] #contents *概要 [#daa8f6ab] 現在の[[Javascript]]の仕様 **経緯 [#k1740935] -ECMA Internationalが、ECMAScript(ECMA-262)規格を策定、標準化。 -ECMA : European Computer Manufacture Association **バージョン [#s3c2baa7] -旧[[Javascript]](ES5) -ECMAScript2015(ES2015、ES6) -ECMAScript2016(ES2016、ES7) **特徴 [#v77b39f6] ***インタプリタ型のスクリプト言語 [#k62922d6] ※ コンパイル型のスクリプト言語も存在する。~ ※ スクリプト言語の意味は、簡易的なプログラミング言語全般 ***オブジェクト指向 [#ycebfbc3] [[React]]などではよく使うが、最近は、SFCで書くケースが多いかも。 ***基本的な記述方法 [#uf053100] -大文字 / 小文字が区別される。 -セミコロン(;)は、コンテキストによって補完する。 -文中に空白改行タブを含めることが可能~ (...と言うか無視され、これによりminificationが可能)。 -変数定義 --グローバルもローカルもvarを使用。 --varを省略可能 ---最初に登場したモノにvarを補完 ---省略時、グローバルとローカルではグローバルが優先される。 --[[letはブロック・スコープ(推奨)>#zfbba236]] -型 --基本型と参照型がある。 ---基本型:数値、文字列、真偽型 ---参照型:配列、オブジェクト、関数 --型が柔軟~ ある意味、VBのバリアント型のような感じ。 --文字列 ---シングル・クォーテーションかダブル・クォーテーションの何れかで囲む。 ---¥(バックスラッシュ)でエスケープして、エスケープ・シーケンスにする。 |#|文字|エスケープ・シーケンス|h |1|シングル・クォーテーション|\'| |2|ダブル・クォーテーション|\"| |3|バック・スラッシュ|\\| |4|改行|\n| |5|リターン|\r| |6|タブ|\t| |7|改ページ|\f| |8|バックスペース|\b| *詳細 [#k619e63f] **letとconst [#zfbba236] varより、letとconstがお薦めらしい。 ***参考 [#yd4e6483] -letとvarの違い~ https://qiita.com/y-temp4/items/289686fbdde896d22b5e -【JavaScript】varとfunction"文"は使わずにletとconstを使って欲しい(切実)~ https://qiita.com/mejileben/items/b8502173216aebae8d36 -varよりすごいletとconst。~ https://ginpen.com/2017/12/02/var-let-const/ **スプレッド演算子 [#ca4641e1] スプレッド演算子は、 -[[setState>React]]メソッドの引数を作成する場合 -[[propsを下位のComponentに渡す場合>React#o23213b7]] -[[Reducers>Redux#g0c704a9]]クラス・メソッドの戻り値を作成する場合 などを行う場合にも使える。 ***参考 [#q902921a] -【JavaScript】スプレッド演算子の便利な使い方まとめ~ https://qiita.com/Nossa/items/e6f503cbb95c8e6967f8 **ArrayBuffer [#kf5afb64] -JavaScriptでバイナリを扱うために生まれた。 -画像・音声処理などで利用されている。 ***参考 [#g6971788] -JSのArrayBufferがよくわからなかったのでほんの少しだけ調べた - はらへり日記~ https://sota1235.hatenablog.com/entry/2016/05/30/145137 const buf = new ArrayBuffer(100); // メモリ空間の確保 const view = new Uint8Array(buf); // 1行めで確保されたメモリ空間へアクセスするための型付き配列 view[0] = 0x12; // bufの0番めに書き込んでいるのと同義 *参考 [#e00d20fa] -ECMAScript - Wikipedia~ https://ja.wikipedia.org/wiki/ECMAScript -ES6 チートシート | POSTD~ https://postd.cc/es6-cheatsheet/ -現代的JavaScriptおれおれAdvent Calendar2017やります。ひとりで。 | Ginpen.com~ https://ginpen.com/2017/12/01/modern-javascript-ginpei-advent-calendar-2017/ --Babelを使って現代的JavaScriptを始める。 --varよりすごいletとconst。 --アロー関数でさくさくコールバック。 --JavaScript待望のクラス。 --華麗にgetterとsetterを使いたい。 --メソッドをメソッドっぽく定義しよう。 --動的にプロパティ名を設定できるようになりました。 --引数の初期値って便利だよね。 --累乗演算子 ** って知ってる? --非同期やるならPromiseでらくらく。 --非同期やるならasync/awaitでもっとらくらく。 --テンプレート記法で簡単文字列組み立て。 --テンプレートを自作しよう --分割代入、画期的な機能。 --分割代入、配列も画期的。 --分割代入と逆に、プロパティを短く定義するやつ。 --分割代入や引数の「残り全部」を持ってくるやつ……。 --配列を「開いて」使うスプレッド演算子。 --データ保持ならObjectよりMapの方が良いの? --値だけ覚えておくならSetという手が。 --WeakMap、WeakSetで「弱い参照」を使えるようになったぞ。 --イテレータとfor-of文で配列以外もぐーるぐる。 --ジェネレータと自作イテレータで各種オブジェクトもぐーるぐる。 --ES6とES2015に違いはないです。 **ECMAScriptと対応状況 [#e34dbaad] ***旧JavaScript(ES5) [#s2cd016a] -ECMAScript 5 compatibility table~ http://kangax.github.io/compat-table/es5/ ***ECMAScript2015(ES2015、ES6) [#v8d0a643] -ECMAScript 6 compatibility table~ http://kangax.github.io/compat-table/es6/ ***ECMAScript2016(ES2016、ES7) [#nd5f739d] -ECMAScript 2016+ compatibility table~ http://kangax.github.io/compat-table/es2016plus/