标签:bin llb 定义 new app on() 查看 不能 xxx
var age=18; //age是在全局作用域中声明的变量:全局变量
function f1(){
console.log(name); //可以访问到name变量
var name="周董" //name是f1函数内部声明的变量,所以name变量的作用域就是在f1函数内部
console.log(name); //可以访问到name变量
console.log(age); //age是全局作用域中声明的,所以age也可以访问
}
//多级作用域
//-->1级作用域
var gender="男";
function fn(){
//gender:可以访问
//age: 可以访问,值为undefined
//height: 不能访问
//-->2级作用域
return function(){
//gender: 通过一级一级作用域的查找,发现gender是全局作用域中声明的变量
//age: 可以访问,值为undefined
//height: 可以访问,值为undefined
console.log(gender);
//-->3级作用域
var height=180;
}
var age=5;
}
function fn(){
console.log(age); //undeinfed
var age=18;
console.log(age); //18
}
- fn函数执行的时候,首先找到函数内部所有的变量、函数声明,把他们放在作用域中,给变量一个初始值:undefined -->变量可以访问
- 逐条执行代码,在执行代码的过程中,如果有赋值语句,对变量进行赋值
function fn(callback){
var age=18;
callback()
}
fn(function(){
console.log(age); //undefined
var age = 15;
//分析:age变量:
//1、查找当前作用域:并没有
//2、查找上一级作用域:全局作用域
//-->难点:看上一级作用域,不是看函数在哪里调用,而是看函数在哪里编写
//-->因为这种特别,我们通常会把作用域说成是:词法作用域
})
能够读取其他函数内部变量的函数。
或简单理解为定义在一个函数内部的函数,内部函数持有外部函数内变量的引用。
标签:bin llb 定义 new app on() 查看 不能 xxx
原文地址:https://www.cnblogs.com/vicky123/p/12911228.html