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); })();