js的作用域
解释
就是代码名、或者变量,在某个范围内起作用和效果目的是提高程序可靠性和减少命名冲突。
全局作用域
就是在整个script标签下面,或者是单独一个js文件出来定义的变量。
var num = 10;
如果有两次声明,则最后一次声明的起效果
在函数内没有声明,直接赋值的变量,也叫全局变量
num2 = 100
函数的形参也可以当作是局部变量
//全局变量:要当浏览器关闭时候才会被销毁 =》占用内存资源
//局部变量:当函数执行完毕就会被销毁。 =》节约内存资源
js里面没有块级作用域
块级作用域{ } 比如说:if(xx){ } for(xx){}
if(2<5){
var num = 10;
}
console.log(num);
如上所示,块级作用域外面可以访问到内部变量。、
作用域链
解释
内部函数访问外部函数的变量时候,采用的是链式查找的方式来决定取哪个值。【就近原则】
function fn1(){ //外部函数
var num = 20;
function fn2(){ //内部函数
console.log(num); //此时输出的是20;【就近原则】
}
f2();
}
var num = 10;
f1();