鍍金池/ 問(wèn)答/HTML/ 立即執(zhí)行函數(shù)中聲明非匿名函數(shù)問(wèn)題

立即執(zhí)行函數(shù)中聲明非匿名函數(shù)問(wèn)題

題目描述

            var a=1;
            
            (function a(){
                console.log(1,a);
                a=2;
                console.log(2,a);
                delete a;
                console.log(3,a);
            })();
            console.log(4,a);

求問(wèn)a=2這一句到底有什么意義?以及輸出的為什么是a函數(shù)本身代碼?

回答
編輯回答
下墜

1, a=2;是相對(duì)于第一行的var a=1;而來(lái)的,主要演示變量的作用域問(wèn)題.
2, 在函數(shù)表達(dá)式(就是括號(hào)括起來(lái)的函數(shù)部分)中,a的作用就是函數(shù)本身,用于自身引用(比如遞歸),是一個(gè)"被污染"的變量名.下面的賦值和刪除都無(wú)法對(duì)a進(jìn)行操作,因?yàn)樗筒皇且粋€(gè)常規(guī)的變量.

2017年3月16日 21:27
編輯回答
憶當(dāng)年
    a = 1
    // 相當(dāng)于
    var a = undefinded
    a = 1
    // 且被提升為全局變量

所以閉包內(nèi)部的 a 當(dāng)然是函數(shù)本身了。

2017年4月28日 03:20