javascript 三种作用域
- 全局作用域
- 函数作用域
- 块级作用域(es6)
全局作用域
- 变量声明不写在函数内部的变量拥有全局作用域,既可以在全局访问。
var a =1;
function b(){
console.log(a) ;//1 可以在函数内访问到
}
console.log(a) ; // 可以在全局访问到
函数作用域
- 变量声明在函数内部,只能在函数内部访问到,外部访问不到
example 1
function b(){
var a=1;//变量a定义在函数内部
}
console.log(a) //error,引用错误,a没有定义
example 2
function b(){
if(false){
var a = 1; //a 的作用不是if的范围,二是函数作用域
}
console.log(a) //1 在函数内部能访问到
}
块级作用域(es6新增)
- es6新增了块级作用域 用 { }表示,与之有关的就是let、const
example 1
{
let a =1; //let 声明a =1 局部变量
var b=2; // var 声明b为全局作用域
}
console.log(a) //error 引用错误,a 没有定义
console.log(b) //2
example 2
{
const a;//语法错误,const声明必须初始化赋值
const c=1; //const 声明c 为常量1,赋值后不会改变,在块级作用域内
c=2;//类型错误,d是常量不能被赋值
}
console.log(c) //error 引用错误,c没有定义