aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/javascript/about_javascript/index.html
blob: ab4cb3574120b9996a5f0a8c2f60af9ca6ea3485 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
---
title: JavaScript について
slug: Web/JavaScript/About_JavaScript
tags:
  - Beginner
  - Introduction
  - JavaScript
translation_of: Web/JavaScript/About_JavaScript
---
<div>{{JsSidebar}}</div>

<h2 id="What_is_JavaScript" name="What_is_JavaScript">JavaScript とは何か?</h2>

<p><strong>JavaScript</strong><sup>®</sup> (よく <strong>JS</strong> と略されます) は<a href="https://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E9%96%A2%E6%95%B0">第一級関数</a>を持つ軽量、インタプリタ方式、オブジェクト指向の言語です。Web ページ向けのスクリプティング言語としてもっとも知られていますが、<a href="https://ja.wikipedia.org/wiki/JavaScript#Uses_outside_web_pages">ブラウザ以外の多くの環境でも使用されています</a>。JavaScript は<a href="https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%E3%83%99%E3%83%BC%E3%82%B9" title="プロトタイプベース">プロトタイプベース</a>の動的なスクリプティング言語であり、オブジェクト指向、命令型、関数型のプログラミング方式をサポートします。</p>

<p>JavaScript は Web のクライアントサイドで実行され、イベントが発生したら Web ページがどのようにふるまうかを設計およびプログラムするために使用できます。JavaScript は学習が容易かつ強力なスクリプティング言語であり、Web ページの動作を制御するために広く使用されています。</p>

<p>よくある誤解に反して、<strong>JavaScript は <em>"インタープリット可能な Java" ではありません</em></strong>。一言で言えば、JavaScript は <a href="/ja/docs/Web/JavaScript/Guide/Details_of_the_Object_Model#Class-Based_vs._Prototype-Based_Languages" title="JavaScript/Guide/Details_of_the_Object_Model#Class-Based_vs._Prototype-Based_Languages">プロトタイプベース</a>のオブジェクト構文をサポートした動的なスクリプティング言語です。基本的な構文はこの言語を習得するのに必要な新しい概念を減らすために、Java と C++ の両方にわざと似せてあり、<code>if</code> 文、<code>for</code><code>while</code> ループと <code>switch</code><code>try ... catch</code> ブロックなどの言語要素はそれらの言語と同じように (あるいはそれに近い) 働きます。</p>

<p>JavaScript は <a href="http://en.wikipedia.org/wiki/Procedural_programming">手続き型 (procedural) 言語</a> (<a href="http://ja.wikipedia.org/wiki/%E6%89%8B%E7%B6%9A%E3%81%8D%E5%9E%8B%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0">日本語訳</a>) と<a href="/ja/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript" title="https://developer.mozilla.org/en-US/docs/Introduction_to_Object-Oriented_JavaScript">オブジェクト指向 (object oriented) 言語</a>の両方として機能することができます。JavaScript では、C++ や Java のようなコンパイラ型言語において一般的な構文クラス定義と反対に、オブジェクトは<strong>実行時に</strong>メソッドとプロパティをそれ以外の空のオブジェクトに加えることでプログラム上に作成されます。一度オブジェクトが構築されると、そのオブジェクトは同じようなオブジェクトを作成するための青写真 (あるいはプロトタイプ) として使われます。</p>

<p>JavaScript の動的な性質は、実行時のオブジェクト構築、可変の引数リスト、関数変数、(<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/eval" title="JavaScript/Reference/Global_Functions/eval">eval</a></code> による) 動的スクリプト生成、(<code>for ... in</code> による) オブジェクトの内部参照、あるいはソースコード復元 (JavaScript のプログラムは関数本体をソーステキストに逆コンパイルできる) を含んでいます。</p>

<p>JavaScript プログラミングに関するより深い議論については、下の <a href="#JavaScript_resources">JavaScript リソース</a>のリンクから得られます。</p>

<h2 id="What_JavaScript_implementations_are_available" name="What_JavaScript_implementations_are_available">どのような JavaScript の実装を利用できますか?</h2>

<p>Mozilla プロジェクトは二つの JavaScript 実装を提供しています。<strong>最初の</strong> JavaScript は Netscape の Brendan Eich が作成して、ECMA-262 改訂 5 版に適合するようアップデートされてきました。このエンジンは、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> というコードネームで、C/C++ で実装されています。<a href="/ja/docs/Rhino" title="Rhino">Rhino</a> エンジンは、主に Norris Boyd (この人も Netscape) によって作成され、Java による JavaScript の実装です。SpiderMonkey のように、Rhino も ECMA-262 改訂 5 版に準拠しています。</p>

<p>時々、SpiderMonkey の JavaScript エンジンには、TraceMonkey (Firefox 3.5) や JägerMonkey (Firefox 4)、IonMonkey のようないくつかの最適化が加えられました。JavaScript の実行パフォーマンスを向上させるための取り組みは継続しています。</p>

<p>上記の実装の他にも、以下のような人気の JavaScript エンジンがあります。</p>

<ul>
 <li>Google の <a href="https://code.google.com/p/v8/">V8</a>。これは Google Chrome ブラウザや最近のバージョンの Opera ブラウザが使用しています。また、<a href="http://nodejs.org">Node.js</a> もこのエンジンを使用しています。</li>
 <li>Safari (Apple) などの WebKit ブラウザで使われている <a href="https://www.webkit.org/projects/javascript/index.html">JavaScriptCore</a> (SquirrelFish/Nitro)</li>
 <li>過去のバージョンの Opera の <a href="http://my.opera.com/ODIN/blog/carakan-faq">Carakan</a></li>
 <li>Internet Explorer で使われている <a href="https://ja.wikipedia.org/wiki/Chakra">Chakra</a> エンジン (ただし、実装している言語は商標の問題を避けるため、公式には "JScript" と呼ばれています)</li>
</ul>

<p>Mozilla の各 JavaScript エンジンは、アプリケーション開発者がソフトウェアに JavaScript を統合するために使用できる公開 API を公開しています。JavaScript をサポートした最も一般的なホスト環境はウェブブラウザです。ウェブブラウザは主に <a href="http://www.w3.org/DOM/">DOM</a> の JavaScript への実装を担当する '<strong>ホストオブジェクト</strong>' を作成するのに公開 API を使っています。</p>

<p>JavaScript によってもう一つの一般的なアプリケーションは、(ウェブ) サーバーサイドスクリプティング言語です。JavaScript を使うウェブサーバーでは、実際の HTTP リクエスト/レスポンスオブジェクトに代わるものとして、ホストオブジェクトを他のプログラムから見える形で置くことになり、JavaScript プログラムは、そのオブジェクトを操作して動的にウェブページを生成することができます。人気のある実例が、<a href="http://nodejs.org">Node.js</a> です。</p>

<h2 id="JavaScript_resources" name="JavaScript_resources">JavaScript リソース</h2>

<dl>
 <dt><a href="/ja/docs/SpiderMonkey">SpiderMonkey</a></dt>
 <dd>C/C++エンジンでMozillaが実装したJavaScript (SpiderMonkey と呼ばれている) について、アプリケーションへの組込方法を含む詳細情報。</dd>
 <dt><a href="/ja/docs/Rhino">Rhino</a></dt>
 <dd>Javaで記述されたJavaScript実装(Rhino と呼ばれている) についての詳細情報</dd>
 <dt><a href="/ja/docs/JavaScript_Language_Resources">言語リソース</a></dt>
 <dd>公布されている JavaScript の標準を指します。</dd>
 <dt><a href="/ja/docs/JavaScript/A_re-introduction_to_JavaScript">JavaScript「再」入門</a></dt>
 <dd><a href="/ja/docs/JavaScript/Guide">JavaScript ガイド</a> および <a href="/ja/docs/JavaScript/Reference">JavaScript リファレンス</a></dd>
</dl>

<p>JavaScript® は、米国およびその他の国における、Oracle の商標または登録商標です。</p>