javascript的三种作用域

javascript 三种作用域

  1. 全局作用域
  2. 函数作用域
  3. 块级作用域(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没有定义

你可能感兴趣的:(javascript的三种作用域)