JavaScript
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/16 10:24 UTC 版)
logo.jsによるJavaScriptの非公式ロゴ | |
パラダイム | マルチパラダイム |
---|---|
登場時期 | 1995年 |
設計者 | ブレンダン・アイク |
開発者 | ネットスケープコミュニケーションズ、Mozilla Foundation |
最新リリース | ECMAScript 2023[1] / 2023年6月 |
評価版リリース | ECMAScript 2025[2] / 2024年2月28日 |
型付け | ダック・タイピング |
主な処理系 | JavaScriptCore、KJS、Nitro、Rhino、SpiderMonkey、V8ほか |
方言 | JScript |
影響を受けた言語 | Scheme、Self、Java、Lua、Perl、AWK、HyperTalk、Python |
影響を与えた言語 | Dart、Objective-J、Google Apps Script、TypeScript |
プラットフォーム | クロスプラットフォーム |
ウェブサイト |
www |
拡張子 |
.js 、.cjs 、.mjs |
プロトタイプベースのオブジェクト指向スクリプト言語であるが、クラスなどのクラスベースに見られる機能も取り込んでいる。
利用される場面はウェブサイト、ウェブアプリケーション、バックエンド、デスクトップアプリケーション、モバイルアプリケーションなど、ウェブブラウザからサーバ、デスクトップからスマートフォンまで多岐にわたっている。
Javaと似た名称を持つが、異なるプログラミング言語である(#歴史を参照)。
概要
JavaScriptはWebブラウザNetscape Navigatorに起源を持ち、現在では様々な用途に利用されるプログラミング言語である。
JavaScriptの言語仕様はECMAScriptとして標準化され、実装は各種のJavaScriptエンジンによって提供されている。JavaScriptエンジンの例としてChromium系ブラウザのV8、Mozilla FirefoxのSpiderMonkey、SafariのJavaScriptCoreが挙げられる。
言語仕様を定義するECMAScriptのほかに、WebブラウザへアクセスするためのAPI仕様にDOMなどがある。これらはECMAScriptから独立しており、JavaScriptからも独立した概念である。
プログラミング言語としての特徴
JavaScriptは以下のような様々なスタイルのプログラミングが可能である。
if
・for
などの制御構造による手続き型プログラミングスタイル.prototype
・class
などのオブジェクトによるオブジェクト指向プログラミングスタイルmap
・高階関数などの関数操作による関数型プログラミングスタイル
これらを可能にしているプログラミング言語としての特徴に、以下のことが挙げられる。オブジェクト指向の面では、JavaScriptのオブジェクトはクラスベースではなくプロトタイプベースである[注釈 1]。関数型の面では、第一級関数をサポートし関数を第一級オブジェクトとして扱える。
AptanaやEclipse, NetBeans, IntelliJ IDEAなどの統合開発環境はJavaScriptをサポートしており、大規模開発が可能になっている。さらにExt JSなどの本格的なGUIライブラリの登場により、デスクトップアプリケーションと遜色ないユーザインタフェースの構築が可能になった。
並行処理
JavaScriptではしばしば、ネットワークを介したリクエストのような "待ち" がある処理を行う[注釈 2]。これに対処するために非同期処理をサポートし並行処理が可能となる。標準で用意されている処理機能にも非同期処理されるものがある。
非同期処理を記述する方法としてコールバック関数がある。JavaScriptはコールバック関数記法をラップするPromise
、Promise
を同期的なコードのように記述できるAsync/await構文をもつ。
またJavaScriptは並列処理による並行処理もサポートしている(下記参照)。
並列処理
JavaScriptでは複数スレッドを用いた並列処理が可能である。共有メモリ上のバッファを表現するSharedArrayBuffer
、バッファ操作オブジェクトAtomics
が定義されている。スレッドそのものの仕様は環境ごとに異なる(ECMAScriptでは定義されていない)。ブラウザの場合はWorker
、Node.jsの場合はworker_threads
で定義されている。ただこの2環境ではほぼ共通の仕組みとなっており、例えばpostMessage
によるメッセージングが両者でサポートされている。
注釈
出典
- ^ “ECMAScript® 2023 Language Specification” (6月 2023). 2 3月 2024閲覧。
- ^ “ECMAScript® 2025 Language Specification” (28 2月 2024). 2 3月 2024閲覧。
- ^ Effective JavaScript(翔泳社、2013)iii。
- ^ Marc Andreessen. “INNOVATORS OF THE NET: BRENDAN EICH AND JAVASCRIPT”. 2008年7月4日時点のオリジナルよりアーカイブ。2008年1月22日閲覧。
- ^ a b “NETSCAPE AND SUN ANNOUNCE JAVASCRIPT, THE OPEN, CROSS-PLATFORM OBJECT SCRIPTING LANGUAGE FOR ENTERPRISE NETWORKS AND THE INTERNET”. 2008年5月28日時点のオリジナルよりアーカイブ。2008年1月22日閲覧。
- ^ ECMA 262, ISO/IEC 16262, JIS X 3060
- ^ JavaScript 第5版(オライリー・ジャパン、2007)P2。
- ^ ECMA-262 第5版 2.Conformance
- ^ WebExtensions, Browser Extensions
- ^ ECMAScript® 2017 Language Specification (ECMA-262, 8th edition, June 2017) Introduction
- ^ “Python and JavaScript” (英語). Brendan's Roadmap Updates (2006年2月19日). 2010年1月25日時点のオリジナルよりアーカイブ。2007年9月5日閲覧。
- ^ 後藤大地 (2008年8月18日). “JavaScript 2.0はECMAScript 3.1ベースに、ECMAScript 4は譲歩”. マイナビニュース. 2013年3月1日時点のオリジナルよりアーカイブ。2022年4月11日閲覧。
- ^ “Mozilla における ECMAScript 5 のサポート”. 2021年4月20日時点のオリジナルよりアーカイブ。2022年4月11日閲覧。
- ^ “var – JavaScript – MDN”. The Mozilla Developer Network. 2012年12月22日閲覧。
- ^ “let – JavaScript – MDN”. The Mozilla Developer Network. 2018年1月24日閲覧。
- ^ “const – JavaScript – MDN”. The Mozilla Developer Network. 2018年1月24日閲覧。
- ^ “ECMAScript Language Specification – ECMA-262 Edition 5.1”. Ecmaインターナショナル. 2012年12月22日閲覧。
- ^ “Console Living Standard” (英語). WHATWG (2017年5月18日). 2017年5月24日閲覧。
- ^ “console”. Mozilla Developer Network. Mozilla. 2013年4月6日閲覧。
- ^ “[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters Rest parameters - JavaScript]”. Mozilla Developer Network. Mozilla. 2018年1月24日閲覧。
- ^ 2020-04-10現在 tc39 stage-4 (finished proposal). ECMAScript2020へ採用予定 tc39
- ^ “Vanilla JS”. vanilla-js.com. 2020年6月16日時点のオリジナルよりアーカイブ。2021年9月4日閲覧。
- ^ “JavaScript tracking – Piwik”. Piwik. 2012年3月31日閲覧。
- ^ 後藤大地 (2009年12月9日). “JavaScriptのブラウザ非互換に解決のみとおし”. journal.mycom.co.jp. 2009年12月9日閲覧。
- ^ John Resig. “Versions of JavaScript”. Ejohn.org. 2009年5月19日閲覧。
- 1 JavaScriptとは
- 2 JavaScriptの概要
- 3 歴史
- 4 文法
- 5 機能
- 6 バージョンとブラウザの対応表
- 7 ライブラリ
固有名詞の分類
- JavaScriptのページへのリンク