« javaScript 関数の宣言、関数オブジェクトの作成、関数の実施 | トップページ | javasScript 関数とtypeof »

2011年3月 1日 (火)

javaScript 関数の代入

javaScriptの式を見るときに、よく似ていて意味が違うのが、

var a = function () { ... };

var b = function () { ... } ();
です。

aは右辺で生成された関数オブジェクトが代入されましたが、
bは、右辺の関数オブジェクトが実施された結果が代入されています。

何が代入されたかはreturn文によって決まります。

よって、
var c= function ...という記述を見かけた場合、そのケツにカッコがあるかどうかを追いかけ、
ある場合は、returnしている要素を凝視します。

以下の3つの違いがわかりますか?


var o = function () {
var name = 'taro';
function sayHello(){
console.log('Hello ' + name);
}
sayHello();
};

o();

var o2 = function () {

var name = 'jiro';
return function () {
console.log('Hello ' + name);
}
}();

o2();

var o3 = function () {
var name = 'saburo';
return {
sayHello: function () {
console.log('Hello ' + name);
}
}
}();

o3.sayHello();

結果: Hello taro, Hello jiro, Hello saburo

|

« javaScript 関数の宣言、関数オブジェクトの作成、関数の実施 | トップページ | javasScript 関数とtypeof »

javaScript」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1049865/39056812

この記事へのトラックバック一覧です: javaScript 関数の代入:

« javaScript 関数の宣言、関数オブジェクトの作成、関数の実施 | トップページ | javasScript 関数とtypeof »