関数定義
まずは基本的なJavaScriptの関数の書き方は下記のような感じです。
'Hello'という関数を定義しています。
function hello(name) {
return "hello " + name;
}
var greet = hello("Tom");
console.log(greet);
// 出力
// hello Tom
nameをhello関数に渡すことによって、「hello name」という
文字列を返してくれます。
ローカル変数
関数の中で定義された関数をローカル変数と言います。
function hello() {
var msg = "hello"; // ローカル変数
console.log(msg); // 出力 「hello」
}
console.log(msg); // エラー
ローカル変数は関数の中でのみ有効なので、
関数外から呼ぶとエラーになります。
無名関数(匿名関数)
関数名を省略して変数に式を代入するやり方を無名関数or匿名関数といいます。
var hello = function(name) {
var msg = "hello " + name;
return msg;
}; // ←[;]のつけ忘れに注意
var greet = hello("Tom");
console.log(greet);
// 出力
// hello Tom
呼び出し方、引数の付け方、結果は一番最初の関数と同じです。
即時関数
関数を定義してからすぐ呼び出せるのが即時関数です。
下記のように関数名を省略して、宣言直後に()をつけます。
(function(name) {
console.log("hello " + name);
})("Tom");
// 出力
// hello Tom
このコードの結果は今までと同じです。
この即時関数は自分が書いたプログラムの変数を、他の人のプログラムから影響を受けたり他の人の変数に影響を与えたりしないローカル変数にするためにもよく使われます。
(function() {
var x = 10,
y = 20;
console.log(x + y);
})();
// 出力
// 30
このように使うことで、xとyを他のコードを気にせず安心して使うことができます。