コンテンツにスキップ

JavaScript

出典: フリー教科書『ウィキブックス(Wikibooks)』
Hello, World!

本書は、JavaScriptの解説書です。JavaScriptは、ウェブページやウェブアプリケーションで広く使われているスクリプト言語であり、最も広く普及しているプログラミング言語の一つです。また、Node.jsなどのランタイム環境を使うことで、サーバーサイドでもJavaScriptを実行することができます。

本書では、初めてプログラミングをする人から、他の言語で経験を積んだ人まで、広く対象としています。基本的なJavaScriptの書き方を解説することで、読者がより深く理解できるように配慮しました。

JavaScriptは、初心者が学ぶのに最適なプログラミング言語であり、ブラウザだけで簡単にプログラムを作ることができます。言語のコア部分は、国際標準化団体であるEcmaインターナショナルによってECMAScriptとして標準化され、仕様が明確になっています。Node.jsなどのランタイム環境を使うことで、JavaScriptをより高度なアプリケーション開発にも利用できます。

目次

[編集]
進捗状況の凡例
数行の文章か目次があります。
:本文が少しあります。
:本文が半分ほどあります。
: 間もなく完成します。
: 一応完成しています。
  1. はじめに
  2. 文法
    1. 字句構造
    2. セミコロンの自動挿入
    3. 予約語
  3. 変数
  4. 演算子
  5. オブジェクト
  6. 文字列
  7. 数値
  8. 配列
  9. 制御構造
  10. 関数
  11. クラス
  12. strictモード
  13. ビット演算
  14. 例外処理
  15. 正規表現
  16. 長整数
  17. 型付き配列
  18. Polyfill
  19. ブラウザ
  20. コードギャラリー
  21. Web API  — Web APIは、JavaScriptでWebブラウザを制御する標準的な手段であり、Webページに対して様々な操作(例えば、要素の追加や削除、イベントの処理、非同期通信等)を行うことができます。
    1. Windowオブジェクト
    2. DOM API
    3. Console API
    4. Canvas API
    5. Fetch API
    6. イベント処理
    7. クッキー
  22. 改廃された技術
  23. ライブラリ(フレームワーク)
    1. ライブラリ
  24. JSON
  25. XML
  26. リファレンス
    1. Global
    2. Array
    3. BigInt
    4. Boolean
    5. Date
    6. FinalizationRegistry
    7. Function
    8. Generator
    9. Iterator
    10. Map
    11. WeakMap
    12. Math
    13. Number
    14. Object
    15. Promise
    16. RegExp
    17. Set
    18. WeakSet
    19. String
    20. Symbol
    21. WeakRef
    22. Error
      1. EvalError
      2. RangeError
      3. ReferenceError
      4. SyntaxError
      5. TypeError
      6. URIError
    23. Intl
JavaScriptの基本的なオブジェクト一覧
名称種類機能
Objectコンストラクタ関数すべてのオブジェクトの基本となるプロトタイプを提供。
Functionコンストラクタ関数関数オブジェクトを定義し、動的に関数を作成可能。
Arrayコンストラクタ関数順序付きリストを保持し、要素の操作をサポート。
Stringコンストラクタ関数文字列を扱い、各種文字列操作メソッドを提供。
Numberコンストラクタ関数数値を扱い、数値演算や変換を提供。
BigIntコンストラクタ関数大きな整数 (2^53 以上) を扱う。
Booleanコンストラクタ関数true または false を扱う。
Symbolコンストラクタ関数一意な識別子を作成するためのプリミティブ型オブジェクト。
Mathグローバルオブジェクト数学的な定数 (Math.PI) や関数 (Math.sqrt()) を提供。
Dateコンストラクタ関数日時を扱い、操作・フォーマットが可能。
RegExpコンストラクタ関数正規表現を扱い、文字列検索や置換を実行。
Errorコンストラクタ関数エラーオブジェクトで、例外処理用の基本クラス。
Promiseコンストラクタ関数非同期処理の結果を表し、コールバックの代替として使用。
Mapコンストラクタ関数キーと値のペアを保持し、キーにあらゆるデータ型を使用可能。
Setコンストラクタ関数一意の値を保持するコレクション。
WeakMapコンストラクタ関数Map のような構造だが、キーが弱参照される。
WeakSetコンストラクタ関数Set のような構造だが、オブジェクトのみを保持し、弱参照される。
JSONグローバルオブジェクトJSONのパース (JSON.parse()) や文字列化 (JSON.stringify()) を提供。
Intlグローバルオブジェクト国際化 (Intl.DateTimeFormat など) をサポート。
Reflectグローバルオブジェクトオブジェクト操作を動的に行うメタプログラミング用API。
Proxyコンストラクタ関数オブジェクトの動作をカスタマイズするためのインターセプターを提供。
AtomicsグローバルオブジェクトSharedArrayBuffer を用いたスレッド間の低レベル同期を提供。
SharedArrayBufferコンストラクタ関数複数のWeb Worker間でメモリ共有を可能にするバッファ。
ArrayBufferコンストラクタ関数バイナリデータを固定長で扱うバッファ。
DataViewコンストラクタ関数ArrayBuffer に対して異なるデータ型でアクセス可能なビュー。
TypedArrayコンストラクタ関数型付き配列 (Int8Array など) を提供し、高速なバイナリデータ操作を実現。
ポイント
  • MathJSONグローバルオブジェクト で、インスタンス化 (new Math()) できない。
  • Object, Array, Function などは コンストラクタ関数 で、new を使ってインスタンスを作成可能。
  • Promise, Map, Set なども コンストラクタ関数 で、新しいデータ構造を提供。
  • Reflect, Atomicsグローバルオブジェクト であり、特定のユーティリティ機能を提供。

Javaとの関連性

[編集]

JavaScriptとJavaは名前が似ていますが、実際にはかなり異なるプログラミング言語です。それぞれの特徴と関連性について簡潔に説明します。

  1. 起源と命名
    JavaScriptは当初、Java言語の人気にあやかって名付けられました。
    しかし、両言語の開発元は異なります(JavaScriptはNetscape、JavaはSun Microsystems)。
  2. 言語の特徴
    JavaScript: 主にWeb開発用の動的型付け言語。
    Java: 汎用的な静的型付け言語。
  3. 実行環境
    JavaScript: 主にブラウザ上で動作(Node.jsなどサーバーサイドも可能)。
    Java: 主にサーバーサイドやデスクトップアプリケーションで使用。
  4. 構文
    一部の構文(ループ、条件文、演算子など)に類似点がありますが、全体的な言語設計は大きく異なります。
  5. オブジェクト指向
    両言語ともオブジェクト指向をサポートしていますが、実装方法が異なります。
    JavaScript: プロトタイプベースのオブジェクト指向言語。
    Java: クラスベースのオブジェクト指向言語。
  6. 相互運用性
    完全に別々の言語であり、直接的な互換性はありません。
  7. 用途
    JavaScriptはWeb開発、特にフロントエンド開発で主に使用されます。
    Javaは大規模なエンタープライズアプリケーション、Androidアプリ開発などに使用されます。

結論として、JavaScriptとJavaは名前の類似性以外に深い関連性はありません。それぞれが異なる目的と設計思想を持つ独立した言語です。

JavaScriptの応用範囲

[編集]

JavaScriptは、Web開発において最も広く使用される言語の一つであり、以下のような応用範囲があります。

  • クライアントサイドWeb開発:JavaScriptは、Webブラウザで動作するクライアントサイドのWebアプリケーション開発に使用されます。JavaScriptを使用することで、ユーザーがWebページやWebアプリケーションを対話的に操作することができます。
  • サーバーサイドWeb開発:Node.jsを使用することで、JavaScriptはサーバーサイドのWebアプリケーション開発にも使用されます。Node.jsは、JavaScriptを実行するためのランタイム環境であり、サーバーサイドでのWebアプリケーションの実行や、データベースやファイルシステムなどのI/O操作を実行することができます。
  • モバイルアプリケーション開発:React Nativeを使用することで、JavaScriptはモバイルアプリケーション開発にも使用されます。React Nativeは、JavaScriptを使用してiOSやAndroidのネイティブモバイルアプリケーションを開発するためのフレームワークです。
  • デスクトップアプリケーション開発:Electronを使用することで、JavaScriptはデスクトップアプリケーション開発にも使用されます。Electronは、JavaScriptを使用して、Windows、Mac、Linuxなどのデスクトップアプリケーションを開発するためのフレームワークです。
  • ゲーム開発:JavaScriptは、Webブラウザ上で動作するゲーム開発にも使用されます。HTML5 CanvasやWebGLなどのWeb技術を使用することで、高品質のWebゲームを開発することができます。

JavaScriptは、Web技術を中心に広く使用される言語であり、多くの場面で使用されています。これらの応用範囲は、今後も拡大することが予想されます。

派生言語

[編集]

JavaScriptの派生言語には、以下のようなものがあります。

TypeScript

[編集]

Microsoftが開発したJavaScriptのスーパーセットであり、静的型付けやクラス、インターフェースなどの機能を追加しています。

TypeScriptのコード例
functiongreet(name:string){console.log(`Hello, ${name}!`);}greet("John");

JavaScript XML

[編集]

JavaScript XML(JSX)は、JavaScriptの拡張構文であり、Reactフレームワークで一般的に使用されます。JSXは、HTMLライクな構文をJavaScriptコードに埋め込むことができ、Reactコンポーネントの宣言的な記述やUIの構築を簡素化します。

JSXでは、<div><span>などのHTML要素をJavaScriptコード内で直接記述できます。これにより、コンポーネント階層構造を視覚的に表現し、リーダブルで保守しやすいコードを記述できます。また、JavaScriptの変数や式を{}で囲んで埋め込むことができ、動的な値をレンダリングすることができます。

例えば、以下はJSXを使用してReactコンポーネントを宣言的に記述する例です:

JavaScript XMLのコード例
importReactfrom'react';constGreeting=({name})=>{return(<div><h1>Hello,{name}!</h1><p>WelcometoJSX.</p></div>);};exportdefaultGreeting;

この例では、Greetingコンポーネントがnameプロパティを受け取り、JSX内でその値を表示しています。JSXはReactにおいて、UIを構築するためのシンタックスシュガーとして広く採用され、Reactの開発者がより効果的かつ可読性の高いコードを書くのに役立ちます。

TypeScript XML

[編集]

TypeScript XML(TSX)は、Reactアプリケーションのためのファイル拡張子で、TypeScriptを使用してReactコンポーネントを記述するための構文です。TSXファイルは、JSX(JavaScript XML)とTypeScriptの機能を組み合わせたもので、静的型チェックとReactコンポーネントの記述を同時に行うことができます。

TSXでは、Reactコンポーネントを定義するために、JSXの構文を使用します。この構文は、HTMLライクな要素構造をJavaScriptやTypeScriptのコード内に埋め込むためのもので、UIを宣言的かつコンパクトに記述できます。また、TypeScriptの型システムを活用して、コンポーネントのプロパティやステートに関する型情報を提供できます。

例えば、以下は簡単なReactコンポーネントを含むTSXファイルの例です:

TypeScript XMLのコード例
importReact,{useState}from'react';interfaceCounterProps{initialValue:number;}constCounter:React.FC<CounterProps>=({initialValue})=>{const[count,setCount]=useState(initialValue);constincrement=()=>setCount(count+1);constdecrement=()=>setCount(count-1);return(<div><p>Count:{count}</p><buttononClick={increment}>Increment</button><buttononClick={decrement}>Decrement</button></div>);};exportdefaultCounter;

この例では、CounterコンポーネントがCounterProps型のプロパティを受け取り、ステートとしてcountを持っています。JSX内で{}を使用してJavaScriptやTypeScriptのコードを埋め込むことができ、動的なUIを構築できます。

CoffeeScript

[編集]

JavaScriptの文法をより簡潔にした言語で、コードを読みやすくするための構文糖衣を提供します。

CoffeeScriptのコード例
greet=(name) ->console.log"Hello, #{name}!"greet"John"

参考文献

[編集]

標準API

[編集]

関連項目

[編集]

下位階層のページ

[編集]

グローバルインスタンス

[編集]
グローバルインスタンス一覧
名称タイプ解説
AbortControllerfunction非同期操作を中止するためのコントローラー
AbortSignalfunction中止シグナル[1]
AggregateErrorfunction複数のエラーをまとめたエラーオブジェクト
Arrayfunction配列オブジェクト
ArrayBufferfunction一般的な固定長バイナリデータバッファ
Atomicsobject共有メモリ上での原子的操作を提供するオブジェクト
BigInt64Arrayfunction符号付き64ビット整数配列
BigIntfunction任意の精度の整数
BigUint64Arrayfunction符号なし64ビット整数配列
Blobfunction不変の生のデータオブジェクト[2]
Booleanfunction真偽値オブジェクト
BroadcastChannelfunctionブラウザコンテキスト間のブロードキャスト通信[3]
BufferfunctionNode.jsにおけるバイナリデータバッファ[4]
ByteLengthQueuingStrategyfunctionストリームのキューイング戦略(バイト長)[5]
CompressionStreamfunction圧縮ストリーム[6]
CountQueuingStrategyfunctionストリームのキューイング戦略(カウント)
Cryptofunction暗号関連機能を提供するオブジェクト
CryptoKeyfunction暗号鍵
CustomEventfunctionカスタムイベント
DOMExceptionfunctionDOM操作に関連する例外
DataViewfunctionArrayBuffer上のデータへの低レベルアクセス
Datefunction日付と時刻オブジェクト
DecompressionStreamfunction展開ストリーム
Errorfunction一般的なエラーオブジェクト
EvalErrorfunctioneval()に関連するエラー
Eventfunctionイベントオブジェクト
EventTargetfunctionイベントターゲット
Filefunctionファイルオブジェクト
FinalizationRegistryfunctionオブジェクトのガベージコレクション通知
Float32Arrayfunction32ビット浮動小数点数配列
Float64Arrayfunction64ビット浮動小数点数配列
FormDatafunctionHTMLフォームデータ
Functionfunction関数オブジェクト
HeadersfunctionHTTPヘッダー
Infinitynumber無限大
Int16Arrayfunction符号付き16ビット整数配列
Int32Arrayfunction符号付き32ビット整数配列
Int8Arrayfunction符号付き8ビット整数配列
Intlobject国際化関連機能を提供するオブジェクト
Iteratorfunctionイテレーター
JSONobjectJSON関連機能を提供するオブジェクト
Mapfunctionマップオブジェクト
Mathobject数学関連機能を提供するオブジェクト
MessageChannelfunctionメッセージチャネル
MessageEventfunctionメッセージイベント
MessagePortfunctionメッセージポート
NaNnumber非数 (Not-a-Number)
Navigatorfunctionブラウザナビゲーション関連機能
Numberfunction数値オブジェクト
Objectfunctionオブジェクト
PromisefunctionPromiseオブジェクト
Proxyfunctionプロキシオブジェクト
RangeErrorfunction範囲エラー
ReadableByteStreamControllerfunctionReadableByteStreamのコントローラー
ReadableStreamfunction読み取り可能ストリーム
ReadableStreamBYOBReaderfunctionReadableStreamのBYOBリーダー
ReadableStreamBYOBRequestfunctionReadableStreamのBYOBリクエスト
ReadableStreamDefaultControllerfunctionReadableStreamのデフォルトコントローラー
ReadableStreamDefaultReaderfunctionReadableStreamのデフォルトリーダー
ReferenceErrorfunction参照エラー
Reflectobjectリフレクション関連機能を提供するオブジェクト
RegExpfunction正規表現オブジェクト
RequestfunctionHTTPリクエスト
ResponsefunctionHTTPレスポンス
Setfunctionセットオブジェクト
SharedArrayBufferfunction共有ArrayBuffer
Stringfunction文字列オブジェクト
SubtleCryptofunction暗号関連機能(Subtle)
Symbolfunctionシンボル
SyntaxErrorfunction構文エラー
TextDecoderfunctionテキストデコーダー
TextDecoderStreamfunctionテキストデコーダーストリーム
TextEncoderfunctionテキストエンコーダー
TextEncoderStreamfunctionテキストエンコーダーストリーム
TransformStreamfunction変換ストリーム
TransformStreamDefaultControllerfunction変換ストリームのデフォルトコントローラー
TypeErrorfunction型エラー
URIErrorfunctionURIエラー
URLfunctionURLオブジェクト
URLSearchParamsfunctionURL検索パラメータ
Uint16Arrayfunction符号なし16ビット整数配列
Uint32Arrayfunction符号なし32ビット整数配列
Uint8Arrayfunction符号なし8ビット整数配列
Uint8ClampedArrayfunction符号なし8ビット整数配列(クランプ)
WeakMapfunctionWeakMapオブジェクト
WeakReffunctionWeakRefオブジェクト
WeakSetfunctionWeakSetオブジェクト
WebAssemblyobjectWebAssembly関連機能を提供するオブジェクト
WebSocketfunctionWebSocketオブジェクト
WritableStreamfunction書き込み可能ストリーム
WritableStreamDefaultControllerfunction書き込み可能ストリームのデフォルトコントローラー
WritableStreamDefaultWriterfunction書き込み可能ストリームのデフォルトライター
atobfunctionBase64デコード
btoafunctionBase64エンコード
clearImmediatefunctionsetImmediateのキャンセル
clearIntervalfunctionsetIntervalのキャンセル
clearTimeoutfunctionsetTimeoutのキャンセル
consoleobjectコンソール関連機能を提供するオブジェクト
cryptoobject暗号関連機能を提供するオブジェクト
decodeURIfunctionURIデコード
decodeURIComponentfunctionURIコンポーネントデコード
encodeURIfunctionURIエンコード
encodeURIComponentfunctionURIコンポーネントエンコード
escapefunction文字列エスケープ
evalfunction文字列をJavaScriptコードとして実行
fetchfunctionHTTPリクエスト
globalobjectグローバルオブジェクト(Node.js)
globalThisobjectグローバルオブジェクト
isFinitefunction有限数判定
isNaNfunctionNaN判定
navigatorobjectブラウザナビゲーション関連機能を提供するオブジェクト
parseFloatfunction浮動小数点数パース
parseIntfunction整数パース
performanceobjectパフォーマンス関連機能を提供するオブジェクト
processobjectNode.jsプロセス関連機能を提供するオブジェクト
queueMicrotaskfunctionマイクロタスクキューへの追加
setImmediatefunction即時実行(Node.js)
setIntervalfunction定期実行
setTimeoutfunction遅延実行
structuredClonefunction構造化クローン
undefinedundefined未定義値
unescapefunction文字列アンエスケープ

外部リンク

[編集]
Wikipedia
Wikipedia
ウィキペディアJavaScriptの記事があります。
ウィキバーシティ
ウィキバーシティ
ウィキバーシティJavaScriptの学習教材があります。
  1. ^DOM: https://dom.spec.whatwg.org/#interface-AbortSignal
  2. ^File API: https://w3c.github.io/FileAPI/#blob-section
  3. ^HTML: https://html.spec.whatwg.org/multipage/web-messaging.html#broadcasting-to-other-browsing-contexts
  4. ^Node.js: https://nodejs.org/api/buffer.html
  5. ^Streams: https://streams.spec.whatwg.org/#blqs-class
  6. ^Compression: https://compression.spec.whatwg.org/#compression-stream
close