var a = 10;
function f1(x,y){
//var b = 5;
b = 5;
console.log(a);
}
f1();
console.log(b); 此时b输出5,因为b=5为隐式的全局变量
在函数外面使用var 声明的变量都是全局变量,作用范围是程序运行的地方.
全局作用域(函数除外)
函数的形参是局部变量
在函数内部,不使用var 定义的变量,叫隐式全局变量
局部作用域(函数体内的执行环境)
function fn(a){
a = 100;
var b = 200;
} //因为这里函数没有调用,所以为激活,里面的东西不会执行
console.log(a);///所以会报错
console.log(b);/报错 局部变量
做函数题时记得想返回值,调用,切记!
/
当访问一个变量时,会先c从本作用域出去找变量,若找不到则向上一级作用域中去找,一次类推,就形成了一个作用域链
例:
var a = 100;
var b = 200;
function f1(){
var a = 4;
var b = 3;
console.log(a);//结果为4
console.log(b);/结果为3
function f2(){
var a = 1;
console.log(a);1
console.log(b);3
function f3(){
console.log(a); 1
console.log(b);/3
}
f3();
}
f2();
}
f1();