JS:作用域
作用域:
标识符(变量和函数名) 在函数的代码块内部外部能够被访问 那么就是这个标识符的作用域
注意:
1、作用域将环境分为内部和外部,全局变量是在函数作用域外部和内部都能访问到的,但局部变量在函数内部,只能在函数内部被访问到
看例子:
function fn() { var a = 20; function fm() { } fm(); console.log(a); } fn(); console.log(a);
打印结果:
20
报错
理解:
在fn函数内部的a是fn的局部变量,不能在函数外部被访问。
例2:
function fn(a) { //第二步var a=200 function fm(a) { //第四步var a=200 console.log(a, 122); //200 //第五步var a = 90 a = 90; console.log(a, 123); //90 } fm(a); //第三步fm(200) console.log(a, 124); //第六步200 } var a = 200; fn(a); //第一步fn(200) console.log(a, 125); //第七步200
例3:
var a = 10; function fn() { console.log(a,2); //undefined a = 40; var a = 20; console.log(a,3); //20 } console.log(a,1); //10 fn(); console.log(a,4); //10
打印结果:
10 1
undefined 2
20 3
10 4
理解:
当window环境中有变量a时,1,4都会打印10;
调用fn时没有传参,因此2是找不到变量a的;
在fn中声明了一个局部变量a,因此3打印的是fn中a的值。