JavaScriptのメリット・デメリットを実践で見てみよう!

JavaScriptはブラウザ上で動作し、Web画面に動きをつけることができる唯一のプログラミング言語です。最近では、サーバサイドでJavaScriptを使える環境も整ってきました。今回は、JavaScriptのメリット・デメリットをコード例を交えてご紹介します。

JavaScriptのメリット

JavaScriptの最大のメリットは、ブラウザ上で動作することです。HTMLは基本的に静的コンテンツなので、Web画面に動きをつけようと思えば、JavaScriptの出番です。

Webアプリの開発において、サーバサイドでHTMLを生成するプログラミング言語はたくさんありますが、ブラウザ上で動作する言語はJavaScriptだけです。このため、JavaScriptを習得しておけば、いろいろなWebアプリ開発を手がけることができます。

JavaScriptのデメリット

プログラミング,kuguru,クグル,くぐる

ブラウザが違うと、同じコードでも挙動が異なる場合があるのが困りものです。一応標準化されているのですが、それでも細かいところで動きが違う恐れがあるので、テストをする時には複数のブラウザ上で確認しなければなりません。

また、言語仕様がよく変わるので、一度覚えても気をつけていないと知らないことだらけになってしまいます。記述方法は自由度が高いのは良いのですが、無名関数や即時関数などの略記法が多用されるので、初心者からするとわかりにくいコードが多いのもデメリットです。

無名関数にメリットはあるの?

JavaScriptには「無名関数」と呼ばれる仕組みがあります。通常、関数には名前を付けます。例えば以下のように、です。

(名前をつけた関数の例)

function hoge(x){
return x + 1;
}

関数名はhogeで、引数xに1を加えた値を返す関数です。JavaScriptの関数はすべて「関数オブジェクト」として扱われるという特徴があります。オブジェクトなので変数に代入できます。例えば、こんな感じです。

(変数に関数オブジェクトを代入した例)

var f = function hoge(x){
return x + 1;
};

通常の関数だと
var i = hoge(1);
のように呼び出しますが、変数に代入した関数オブジェクトは、
var i = f(1);
のように呼び出せます。変数に関数オブジェクトを代入した場合、関数名「hoge」は使わなくなりますので省略できます。

(関数名を省略した例)

var f = function(x){
return x + 1;
};

これが無名関数です。JavaScriptは、関数の引数に関数オブジェクトを取ることが非常に多くあります。この時、1回きりしか使わない関数をわざわざ名前付きで定義せず、引数に直接書くことができるのが、無名関数の利点です。

(関数の引数に無名関数を使った例)

setTimeout(function(){alert(“”1秒経ちました””);}, 1000);

setTimeoutは第2引数の時間が経過すると、第1引数の関数が実行されます。無名関数を使うと、簡単な処理なら直接引数に書けるので見通しがよくなります。

即時関数のメリットは何?

JavaScriptは関数指向の言語です。オブジェクト指向言語ならあまりグローバル変数に悩まされることはないのですが、JavaScriptは気をつけないとすぐにグローバル変数だらけになって、とても面倒なことになります。
一方、関数内で宣言された変数はローカル変数と呼ばれ、その関数の外には影響しません。即時関数を使うことでグローバル変数の代わりにローカル変数を多用することができ、グローバル変数の量を減らしてメンテナンスしやすくできるという利点があります。

(グローバル変数を使った関数の例)

var x = 0; // グローバル変数
var f = function(y){
return x + y;
}
console.log(f(1));

(即時関数化してローカル変数にした場合)

console.log(
(function(){
var x = 0; // ローカル変数
return x + y;
})(););

サーバーサイドもJavaScriptにするメリットとは?

JavaScriptといえばクライアントサイドの処理を書くのが定番でしたが、最近はサーバサイドのプログラムを作る基盤もできました。代表的なものはnode.jsです。GoogleChromeにも使われているV8 JavaScript実行エンジンを搭載した高速な実行環境です。

これを使えば、PHPやRubyのように、サーバ側の処理をJavaScriptで書くことができます。node.jsはシングルスレッドのノンブロッキングI/O方式を採用し、メモリを節約しながら大量の同時アクセスを素早くさばくことができるように工夫されています。(C10K問題に対応)

まとめ

今回は、JavaScriptのメリット・デメリットをコード例を交えてご紹介しました。ブラウザに動きをつけるのはJavaScriptでなければできないので、とても重要な言語です。また、最近ではサーバサイドのプログラムを書く基盤も登場しました。書けるようになっておいて損はないでしょう。

おすすめコンテンツ


ページ上部へ戻る