1作用域
1.1、作用域定义
通常来说,一段程序代码中所用到的名字(变量名和函数名)并不总是有效和可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
简单理解:就是代码名字(变量)在某个范围内起作用和效果
作用域的使用提高了程序逻辑的局部性,增强了程序的可靠性,减少了名字冲突
js作用域(es6)之前:全局作用域 局部(函数)作用域,es6后有块级作用域
1.2、全局作用域
- 直接编写在script标签中或者一个单独的js文件内的Js代码
- 全局作用域在页面打开时创建,在页面关闭时销毁
- 在全局作用域中有一个全局对象window,它代表的是一个浏览器的窗口,它由浏览器创建,我们可以直接使用它
- 在全局作用域中:创建的变量都会作为window对象的属性保存;创建的函数都会作为window对象的方法保存
- 全局作用域中的变量都是全局变量;在页面的任意部分都可以访问的到。
var a=10;
var b=10;
// var c="hello";
console.log(window.c);//加window.,如果没有找到变量c,会undefined,不加的话,会报错
function fun(){
console.log("我是fun函数");
}
window.fun();//创建的函数都会作为window对象的方法保存
1.3、局部作用域(函数作用域
- 在函数内部就是局部作用域。这个变量只在函数内部起作用
- 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
- 每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的
- 在函数作用域中可以访问到全局作用域的变量, 在全局作用域中无法访问到函数作用域的变量
- 在函数中如果要访问全局变量,可以使用window对象
var a = 10;
function fun() {
var a = "我是fun函数中的变量a";
//console.log("a="+a);
function fun2() {
// console.log(a);
console.log("a=" + window.a);
}
fun2(); //10
}
fun();