こんにちは。
JavaScript言語の特徴を紹介したいと思います。
JavaScript 4つの特徴
特徴は大きく4つです。
- 動的型付け言語
- シングルスレッド
- 小数点は内部的に2進数で扱う
- オブジェクト指向
詳しく見ていきましょう。
特徴1:動的型付け言語
データ型とはデータの種類のことで、たとえば「あいう」は文字型で、1,2,3は数値型、true/falsは論理型に分類できます。
プログラム言語には、このデータ型を強く意識する静的型付け言語と、ほとんど意識する必要がない動的型付け言語があります。この2つをまとめたものが以下です。
- 静的型付け言語
数値を格納するために用意された変数に文字列を格納することは許されない。 - 動的型付け言語
データ型に寛容で、文字列を格納した変数に数値を格納することが可能。変数が代入される値に応じて形や大きさを変えてくれる。
Javascriptは動的型付け言語に該当します。
静的型付け言語と動的型付け言語の特徴は以下になります。
静的型付け言語 | 動的型付け言語 | |
---|---|---|
表記 | 複雑 | 簡素 |
バグ | 少ない | 多い |
パフォーマンス | 良い | 悪い |
プログラミング言語 | Java、C# | JavaScript |
特徴2:Javascriptはシングルスレッド
Javascriptは他言語と違いシングルスレッドです。
プログラムの開始から終了までの一連の処理の流れのこと

特徴3:小数点数は内部的には2進数で扱う
小数点数は内部的には数値を2進数で扱います。
つまり、10進数でごく簡単に表せる0.2という値が、2進数で「0.0011011..」という無限循環小数で表すことになります。
例を見てみましょう。
console.log(0.2 * 3);
結果:0.6000000000000001
この誤差はごく小さい物ですが、正確な値が表示されない為、次のようなカウンター変数では小数点は利用してはいけません。
for (let i = 0.1; i < 1.0; i += 0.1) {
console.log(`現在値:${i}`);
}
結果:
現在値:0.1
現在値:0.2
現在値:0.30000000000000004
現在値:0.4
現在値:0.5
現在値:0.6
現在値:0.7
現在値:0.7999999999999999
現在値:0.8999999999999999
現在値:0.9999999999999999
9回で終了するはずのループが10回実行されてしまいます。また、変数iの出力値も正しくありません。
特徴4:オブジェクト指向
JavaScritpはオブジェクト指向言語として有名です。
オブジェクト指向の特徴
プログラムで扱う対象をオブジェクト(モノ)に見立て、オブジェクトを組合せながらコードを作成する手法のこと。
オブジェクト指向言語:C#、Ruby、JavaScriptなど
そもそもオブジェクトとは何でしょうか?
- ”データを操作するためのさまざまな機能を持った” 高機能な入れ物
- オブジェクトはプロパティとメソッドから構成される
- プロパティ:オブジェクトの状態や特性を表すための情報
- メソッド:オブジェクトを操作するための道具(機能)
つまり、特性や機能を持った”モノ”に見立てながらプログラムを組んでいくことがオブジェクト指向ということです。
例えば、たい焼き機で考えてみましょう。
たい焼きを大量に作る場合、金型が必要です。
金型は勉強する中で出てくるコンストラクタ(または、クラス)で用意し、newキーワードで何度も呼び出すことで、クリームやチョコ、餡子といった異なるプロパティのオブジェクトを作成します。
つぎに、HTMLを例に考えてみましょう。
HPはタイトル(h1タグ)や段落(pタグ)、ボタン(buttonタグ)といった様々な要素から成り立っています。JavaScriptでは、HPを木というオブジェクトに見立て、各要素を木の枝のように捉えながら操作していきます。
オブジェクト指向以外の言語
一方で、オブジェクト指向ではない言語は何でしょうか?
- コンピューターがプログラムを実行すべき命令や手続きを順に従って記述していくことで構成されるプログラミング言語
- 手続き型プログラミング言語は処理を順番通りに構成していくことから「コードが記述しやすい」ということや「学習コストが低い」という特徴がある
- Perl/C言語(C++はC言語をオブジェクト指向で書けるようにした言語)
簡単にイメージするため、レストランを例にしてみましょう。
■手続き型
・実行者は1人。
・材料集め⇒料理⇒客への料理提供を全て実行者が行います。
■オブジェクト指向型
・管理者1人で、実行者多数。
・管理者は食材屋さん、料理人、ウェイターに指示を出し、客に料理提供します。
以上から、オブジェクト指向は大規模システムを構築が可能ですが、複雑になるというデメリットがあるとイメージ頂けたら良いかと思います。
まとめ
JavaScriptが持つ特徴4つを紹介しました。
- 動的型付け言語
- シングルスレッド
- 小数点は内部的に2進数で扱う
- オブジェクト指向
学習する内に腹落ちしてくると思いますので、今回でざっくりとしたイメージを持つことが出来れば良いなと思います。
以上です。
ありがとうございました。
コメント