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の変数についての考察