注意:JavaScript 预编译和执行的先后关系和特点
一个变量的作用域是程序源代码中定义这个变量的区域。
全局变量:拥有全局作用域,在JavaScript代码中的任何地方都是有定义的。
局部变量:作用域是局部性的,只在函数体内有定义,函数参数也是局部变量。
在函数体内,局部变量优先级高于同名的全局变量,全局变量会被函数体内同名的局部变量或参数变量覆盖。
注意:在JavaScript中没有块级作用域概念,取而代之的是函数作用域。
变量在声明它们的函数体以及这个函数体嵌套的任意函数体内部都是有定义的。即函数内声明的所有变量在函数体内是始终可见的。
一个对象列表或者链表,这组对象定义了这段代码“作用域中”的变量。
定义一个函数时,它实际上保存一个作用域链。当调用这个函数时,它创建一个新的对象来存储它的局部变量,并将这个对象添加至保存的那个作用域链上。
对于嵌套函数来讲,每次调用外部函数时,内部函数又会重新定义一遍。因为每次调用外部函数时作用域链都是不同的,也就是说内部函数在每次定义的时候都有微妙的差别。
转载于:https://www.cnblogs.com/renwj/p/11475043.html