tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

javascriptの即時実行パターンをおさらいメモ

はじめに

javascriptの即時実行は結構使いますが、パターンがいくつかあるので整理のためのおさらいメモです

まずは関数の宣言方法についておさらい

関数の宣言方法(呼び方の種類について)

/* 1.コンストラクタ関数 */
var func = new Function();

/* 2.関数宣言(function文) */
function f(){};

/* 3.関数式 */
var func = function(){};

/* 4.関数名指定関数式 */
var func = funciton func (){};

/* 5.無名関数 */
function(){}

この中で、2,3,5についての即時実行パターンをおさらい

即時実行パターン

/* 
 * 2.関数宣言(function文)の即時実行
 */
!function func() {console.log('function sentence');}();

// これだとNG : Uncaught SyntaxError
//function func() {console.log('function sentence');}();

/* 
 * 3.関数式の即時実行 
 */
var func = function() {console.log('function expression');}();

/* 
 * 5.無名関数の即時実行 
 */
// 一番良く使うやつですね
(function() { console.log('anonymous func 1'); })();

// カッコでくくって文にすればOK的な?
(function(msg) { console.log('anonymous func 2') }());

!をつけたり()でかこったりだとOKってことで、
文や式にしてしまえばOK的な理解ですかね。

以前書いた「javascriptのevalでエラったら。。。evalが意図したとおり動かない理由」に似てますね。

ふむふむ。

この記事で参考にした書籍

開眼!  JavaScript ―言語仕様から学ぶJavaScriptの本質
Cody Lindley
オライリージャパン
売り上げランキング: 11,609