匿名函数的作用域问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_25354709/article/details/82664666

题目一:

1. window全局作用域预解释
var money;

匿名函数的function在全局作用域下是不进行预解释的

2. 代码从上到下执行
money = "1000";   //给money变量赋值

匿名函数之自执行函数:定义和执行一起完成了

3. 自执行函数的私有作用域
预解释:
var money;

return后面的代码不参与预解释。
return后面跟着的,都是我们返回的值,所以不进行预解释。

4. 自执行函数里面代码执行
console.log("flag1:" + money);  //已声明,但是未赋值。  undefined
money = "5000";                 //给money变量赋值
console.log("flag2:" + money);  //money变量已经有值了。 5000

5. 自执行函数里面如果没有私有变量,会向上查找吗?


var money = "1000";
(function () {
    console.log("flag1:" + money);          //undefined。 已声明变量money,但未初始化
    var money = "5000";                     //给变量money赋值
    console.log("flag2:" + money);          //5000
    return function (m) {
        console.log("flag3:" + m);          //200
        console.log("flag4:" + money);      //5000
        console.log("flag5:" + this.money); //1000,  this->window
    }
})(100)(200);
var money = "1000";
(function () {
    console.log("flag1:" + money);          //undefined。 已声明变量money,但未初始化
    var money = "5000";                     //给变量money赋值
    console.log("flag2:" + money);          //5000
    return function (m) {
        console.log("flag3:" + m);          //200
        console.log("flag4:" + money);      //5000
        console.log("flag5:" + this.money); //1000,  this->window
    }
})(100)(200);



执行过程:
1.全局作用域window下的预解释:
var money;

自执行函数在全局作用域下不参与预解释。

2.代码从上到下执行:
money = "1000";   //给全局变量money赋值

自执行函数声明和执行一起完成:

3.自执行函数首先开辟一个新的私有作用域
预解释:
var money;    //声明一个私有变量
return后面的部分,作为值,不参与私有作用域下的预解释

4.自执行函数,代码从上到下执行
console.log("flag1:" + money);    //只声明了私有变量money, 未赋值。 undefined

猜你喜欢

转载自blog.csdn.net/qq_25354709/article/details/82664666
今日推荐