JavaScript高级(五)作用域
作用域
什么是作用域?
*它就是一块“地盘”,一个代码段所在的区域
*它是静态的(相对于上下文对象),在编写时就确定了
作用域的分类
- 全局作用域
- 局部作用域
- 没有块级作用域(ES6有)
作用域的作用
- *隔离变量,不同作用域下同名变量不会有冲突
***函数内部定义的变量与在函数外部定义的变量同名也是可以的,
- n+1原则:n是执行函数,1是全局作用域window
var a = 10;
b = 20;
function fn(x) {
var a = 100;
c = 300;
console.log('fn()', a, b, c, x);//100 20 300 10
function bar(x) {
var a = 1000;
d = 400;
console.log('bar()', a, b, c, d, x);//1000 20 300 400 100
//1000 20 300 400 200
}
bar(100);
bar(200);//**执行函数两次,它的作用域不会变化**
}
fn(10)
//以上代码的输出结果为:
//fn() 100 20 300 10
//bar() 1000 20 300 400 100
//bar() 1000 20 300 400 200
//没有块作用域
// if(true){
// var c=3;
// }
// console.log(c);//3
执行函数两次,它的作用域不会变化
还没有评论,来说两句吧...