作用域
作用域指的是一个变量的作用范围
在JS中一共有两种作用域:
1.全局作用域
2.函数作用域
全局作用域
创建的变量都会作为window对象的属性保存
创建的函数都会作为window对象的方法保存
var a = 10; var b = 20; console.log(window.a, window.b); function fun(){ console.log("我是fun函数"); } window.fun(); window.alert("hello");
函数作用域
调用函数时创建函数作用域 函数执行完毕后 函数作用域销毁
每调用一次函数就会创建一个新的函数作用域 他们之间是相互独立的
在函数作用域中 可以访问到全局作用域的变量
在全局作用域中无法访问到函数作用域的变量
注意:如果在函数作用域,没有使用var 直接给一个变量赋值 相当于是 window.a=x 它是全局变量
当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用,没有在上一级中找
如果没有想上一级作用域中找,直到找到全局作用域为止。
如果全局作用域中依然没有找到,则会报错ReferenceError
在函数中要访问全局变量可以使用window 比如window.a
在函数作用域中也有声明提前的特性
使用var关键字声明的变量 会在函数中所有的代码执行之前被声明
函数声明也会在函数中所有的代码执行之前执行
在函数中,不使用var声明的变量都会称为全局变量
定义形参就相当于在函数作用域中声明了变量
关于提前声明
变量的提前声明
函数的提前声明