「[[.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/

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS