ponkiti's blog

主に自分用、イベント参加メモや備忘録として利用

JavaScriptの関数をさらう

この記事は下記の続き。

JavaScript 第6版』では、「関数定義形式」と「関数定義形式」の2つを使って関数を定義している。関数と関数式と書いてあったようだけど、このサイトのように「function文」と「function式」とすればよさそう。

function文

function foo() {
    console.log("foobar");
}
foo();

function式

関数もデータ型なので、変数に入れることができる。
式として関数を定義する場合は、関数名(下記の場合はfoo)を省略できる。

var foo = function foo() { // 2つ目のfooは省略できる
    console.log("foobar");
};
foo();

var foo = function() { // 無名関数や匿名関数と呼ぶ
    console.log("foobar");
}; // セミコロンをつけること!
foo();

関数の引数

function foo(bar) {
    console.log("FOO" + bar);
}
foo("BAR");

function foo(bar, baz, qux, ...) { // 関数の引数は複数指定可
    // 処理;
}

ローカル変数と返り値

function foo() {
    var bar = "BAR"; // ローカル変数(function内でのみ有効)
    return bar; // 返り値
}
foo();

即時関数

特殊な書き方で、定義してすぐに呼び出すことができる。

(function foo() {
   // 処理
})();

引数をとることもできる。

(function foo(bar) {
    console.log(bar);
})("foobar");

即時関数を使うことで安全なコードを書くことができる。
複雑な関数の場合、即時関数を使った方がよい。

(function () {
    var foo = 10,
        bar = 20; // fooとbarをローカル変数にできる
    console.log(foo + bar);
})();