1. kanohisa

    Posted

    kanohisa
Changes in title
+[JavaScript]自己定義関数
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,34 @@
+```javascript
+var devour = function(target){
+ //1回目の実行のみ実行される
+ console.log('ゲルトが無残な姿で発見されました。');
+
+ //devourを再定義
+ devour = function(target){
+ //2回目以降実行される
+ console.log(target + 'が無残な姿で発見されました。');
+ }
+}
+devour('ヨアヒム'); //ゲルト
+devour('リーザ'); //リーザ
+devour('ペーター'); //ペーター
+```
+ 関数のなかで実行した関数を再定義すると、初回のみ実行したい処理をひとつの関数のなかで分離できる。
+
+ また、再定義後のスコープ内に再定義前のスコープ変数への参照を持っていれば、その参照のスコープはレキシカルスコープとなるのでクロージャとしても使える。
+
+```javascript
+var visitCount = function(){
+ var count = 1;
+ console.log('はじめまして! ○○さん');
+
+ visitCount = function(){
+ count++;
+ console.log(count + '回目の訪問です');
+ }
+}
+
+visitCount(); //はじめまして! ○○さん
+visitCount(); //2回目の訪問です。
+visitCount(); //3回目の訪問です。
+```