JavaScriptとJSONとECMAScript の変更点

Last-modified:

** 趣旨 [#w59a4e43]

はやりのnode.jsで色々やっていて、ドキュメントが散らかりすぎて大変だったのでまとめる。

また、ここでの記述は2013/05時点のものなので、後々は陳腐化していくと思います。
ここで使われる"最新"や"安定板"の様な時系列にかかわる言葉は2013/05時点のものとして解釈してください。

** それぞれの概要 [#d962e946]

- JavaScript
-- https://developer.mozilla.org/ja/docs/JavaScript
-- 狭義の意味でMozillaが作ったECMAScriptの実装の一つ
-- 文脈によりECMAScriptの各実装を含む表現になることあり
-- ここではMozilla以外の実装も含めての意味で使用

- JSON
-- http://www.ietf.org/rfc/rfc4627.txt
-- ECMAScript 3rd edition を元にしたデータ記述言語
-- JavaScriptに依存しているわけではない

- ECMAScript
-- http://www.ecma-international.org/publications/standards/Ecma-262-arch.htm
-- 標準化文書
-- 最新は Edition 5.1 (June 2011)

** JavaScriptオブジェクトはJSONとイコールじゃない [#od366280]

全部をやるのは無理なので、気になって調べたとこ周辺だけ。

- JavaScriptのオブジェクトリテラル
-- http://ecma-international.org/ecma-262/5.1/#sec-11.1.5
-- キーに使用できるもの
--- コード上での文字列
--- 文字列リテラル
--- 数値
-- ケツカンマ
--- ECMAScript 3rd => NG (実装の拡張でできるものもある)
--- ECMAScript 5th => OK
-- サンプルコード
 {                  // PropertyName :
   alice : "value", //  IdentifierName
   "bob" : "value", //  StringLiteral
   100   : "value", //  NumericLiteral
 }


- JSONのリテラル
-- http://www.ietf.org/rfc/rfc4627.txt
-- ファイル全体に散らばってるので抜粋
 object = begin-object [ member *( value-separator member ) ] end-object
 member = string name-separator value
 string = quotation-mark *char quotation-mark
 quotation-mark = %x22      ; "
-- キーに使用できるもの
--- 文字列リテラル
-- ケツカンマNG
-- サンプルコード
 {
   "alice" : "value",
   "bob"   : "value",
   "100"   : "value"
 }

** ECMAScritp 5th の対応状況 [#r49b3cf8]

動かして調べたわけではなく、ドキュメントを漁って宣言していたかどうかだけです。

| Mozilla FireFox | 11.0? <= | https://developer.mozilla.org/ja/docs/JavaScript/ECMAScript_5_support_in_Mozilla &br;変更ログの2012/02/25が最初のサポート宣言&br;日付に合うリリースバージョンが11.0 |
| Internet Explorer | 9 <= | http://download.microsoft.com/download/D/1/0/D1047514-A38A-4F27-93D1-BAA6F766655E/20101025_OST_kasugai.pdf |
| Safari (OS X) | 6 <= | https://developer.apple.com/jp/technologies/safari/ |
| Opera | 11.60 <= | 原文 http://my.opera.com/desktopteam/blog/2011/11/04/opera-11-60 &br;和訳 http://opera-users.jp/translations/weekly/2011-11-04-opera-11-60/ |
| Google Chrome | ? | 早い段階から対応しているようだけれど、リリースを上手く追えなかった |