在JS当中一个变量的作用域(scope)是程序中定义这个变量的区域。变量分为两类:全局(global)的和局部的。
其中全局变量的作用域是全局性的,即在JavaScript代码中,它处处都有定义。而在函数之内声明的变量,就只在函数体内部有定义
。它们是局部变量,作用域是局部性的。函数的参数也是局部变量,它们只在函数体内部有定义。
上面这简单几行代码输出的结果为10,中间其实有一个这样的过程
var i=undefined;
i=10;
console.log(i)
再来看看下面这一段代码:
输出为undefined,这里面涉及到变量提升,代码会变成如下样子:
所以最后结果为undefined
变量提升其实就是将变量的声明提升到函数的最上面
作用域分为全局作用域和函数作用域
1. 全局作用域是相对的
2. 函数作用域,只要出现function就会产生自己的作用域