这是看了别人的博客所写的,理解一下
//理解函数的作用域
//1、声明在函数体外的 是全局变量 声明在函数体内的是局部变量 在函数体内不带有var 的声明也就变成了全局变量
// 2、函数体内可以读取函数体外,函数体外不能读取函数体内;
var a = 1; //全局变量
function b(){
var c = 2; //局部变量
d = 3; //全局变量
}
console.log(a); // 1
console.log(c); // 报错
console.log(d); //3
//每一个函数都有一个与之相关的作用域的链,当函数读取变量X的时候,他会从链的第一个对象找起,如果没有找到就找下一个,如果下一个找到的话,那就会使用。如果找不到就接下一个对象寻找
// 到最后都没有找到,就会报一个错误 ReferenceError;
// 2、作用域的查找顺序 为 :当前函数对象,上一层函数对象 。。。。到window对象