欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

匿名函数的作用域问题

程序员文章站 2023-12-21 21:25:58
...

题目一:

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

 

相关标签: JavaScript

上一篇:

下一篇: