匿名函数的作用域问题
程序员文章站
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