16-作用域(全局作用域及局部作用域)
//作用域 全局作用域 函数作用域
//函数的内部环境可以访问到所有外部环境的值,但是外部环境不能访问内部环境的值
//注意事项
//在全局变量和局部变量不同名时,全局变量其作用域整个程序
//全局变量和局部变量同名时,全局变量的作用域不包含局部变量的作用域
var x = 1; //全局变量
function f1(){ //全局函数
var y = 2; //f1函数中有一个y变量
function f2(){ //f1函数中有一个f2函数
var z = y; //f2函数中有一个z变量 z= 2;
y = x; //y = 1;
x = z; //x = 2
console.log(x,y,z)
};
f2();
};
f1();
//作用域 分解
//第一种
var a = 1;
function f(){
console.log(a)
};
f();
//结果 1
//第二种
function f2(){
var a2 = 2;
};
f2();
console.log(a2)
//结果 a2 is not defined
//第三种
var a3 = 1;
function f3(){
console.log(a3);
a3 = 2;
};
f3();
console.log(a3)
//结果 1 2
//第四种
var a4 = 1;
function f4(){
console.log(a4); // undefined
var a4 = 2;
};
f4();
console.log(a4)
//结果 undefined 1
//面试题
var a = 10;
function f1(){
var b = 2*a; //b = 2*undefined NAN
var a = 20;
var c = a+1; //c = 21
console.log(b); //NAN
console.log(c); //21
};
f1();