目标
- 能够说出Javascript的两种作用域
- 能够区分全局变量和局部变量
- 能够说出如何在作用域链中查找变量的值
1. 作用域
1.1 JavaScript作用域:
使代码(变量) 在某个范围内起效果和作用,目的是提高程序可靠性和减少命名冲突
- 全局作用域
var num=1;
在整个script标签中生效,或是js文件中;
- 全局变量
var num=1;
在全局作用域下声明的变量叫做全局变量
- 可以在全局下任意使用;
- 没有声明直接赋值的变量也属于全局变量
function fn () {
num=1;
};
- 局部作用域
- 只在函数中生效,无法单独调用, 定义函数的形参也算是局部变量;
function fn (one) {
var num=1;
};
- 局部变量
在局部作用域下声明的变量叫局部变量, 或在函数内部定义的变量;
- 只能在函数内部调用
代码同上
总结: 从执行效果来看全局和局部
- 全局变量只有在浏览器关闭的时候才销毁
- 局部变量当程序执行完毕之后就会销毁
2. 作用域链
内部函数访问外部函数的变量, 采取的是链式查找的方式来决定取哪个值, 这种结构称之为: 作用域链, 理解: 就近原则查找
function f1() {
var num = 123 ;
function f2() {
console.log(num);
}
f2();
}
var num = 456 ;
f1();//就近原则查找