作用域是指一个变量作用的范围:
(1)全局作用域:
直接编写在script标签中的JS代码,都在全局作用域。
全局作用域在页面打开时创建,在页面关闭时销毁。
在全局作用域中,有一个全局对象window,我们可以直接使用。
在全局作用域中,创建的对象都会作为window对象的属性保存。
创建的函数也会作为window对象的方法保存。
全局作用域中的变量都是全局变量,在页面的任意的部分都可以被访的到。
(2)函数作用域:
调用函数时,创建函数的作用域,函数执行完毕之后,函数作用域销毁。
每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的。
函数作用域是一个局部的,在函数作用域中可以访问到全局作用域的变量。
在全局作用域中无法访问到函数作用域的变量。
当在函数作用域中操作一个变量时,它会在自身作用域中寻找,如果没有,则向上找。
在函数中想要访问全局变量的话,可以使用window对象。
注意:定义形参就相当于在函数作用域中声明了变量
在函数中,不使用var声明的变量,都会成为全局变量
总结:局部可以访问到全局,但是全局不能访问到局部。
<script>
var a=123;
var n="我会在window对象中作为属性保存";
function fun(){
console.log("我会在window对象中作为属性保存")
}
console.log(window.a);
console.log(window.n);
window.fun();
function fun2(){
b=11;//没有使用var关键字声明,这里的b变成了全局变量
}
fun2();
console.log(b);//b变成了全局变量,可以访问到
</script>