一个标识符代表了变量或者是函数的引用
一个变量名或者函数的名字,在哪些地方能够使用,这些能够让这个标识符被正确引用的地方就是这个标识符的作用域
作用域一般来说ES5:function var 就跟作用域有关 ==> 函数的代码不运行就没有里面的标识符的生命,函数调用的时候
1.先进行扫描(预编译),
2.再运行脚本
1、扫描的时候会把内部的所有var和function修饰的标识符加到一个对象中去 ==》 AO
函数运行时, 产生一个作用域
1、先把内部变量和形参声明了(变量不赋值,形参赋值实现数据)
2、然后把函数隐式的做提升,函数提升会把脚本一起做提升
3、按照函数体内部的代码逻辑(js的单线程执行任务)执行代码
4、函数被调用时 是在它声明的地方(作用域去执行代码)