JavaScript 関数リテラルとは?

関数リテラルとは?

JavaScriptの関数定義、通常は

function test(x){ return x*x; }


関数リテラルを使うと

var test = function(x){ return x*x; }

こうすると、ほかのJavaScriptの式中にも記述できる。

ブロックレベルのスコープはない

var a="global";
function f(){
  alert(a);
  var a="local";
}

このプログラムで最初のalert(a);はundefinedが表示される。
globalは表示されない。


JavaScriptにはブロックレベルのスコープがないので、
関数f内で宣言された変数aは関数全体で有効となる。
つまり、alert(a);はローカル変数のaを見ている。


しかし、aにlocalが設定されるのはalert(a);の後なので、
undefinedとなる。


この例を見るかぎり、変数は関数の先頭で宣言したほうがよいが、
下記もあとで読んでみる。
JavaScriptの変数についての考察