作用域和闭包(1)

作用域:
1、全局变量:
(1)声明在函数外部的变量;
(2)没用使用var关键字,使用直接赋值的方式的变量。
作用范围:全局变量在整函数生命周期都有效;在没有赋值之前调用,会输出undefind。
eg:
1)、var a = 100;//显示声明
2)、 b = 200;//隐式声明

  2、函数作用域:
                声明在函数内部的变量。
          作用范围:在函数内部声明的变量只能在函数内访问,在函数外部访问不了。
test.png
result.png
  3、块作用域:
               块作用域由 { } 包括,if语句和for语句里面的{ }也属于块作用域。
           1)、var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
           2)、let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
           3)、const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。
block.png
result2.png

你可能感兴趣的:(作用域和闭包(1))