一:作用域的问题 简单案例1: var a = 1; var n = function () { console.log(a); var a=2; } n(); =>输出undefined原因:这是因为js中,在一个函数内引用变量时,会现在其当前函数内部作用域搜索,也被称为函数内部作用域.当其内部没有该变量时,则搜索其上层作用域,一直到全局作用域.该例子中 a 先搜索其内部,有a变量的声明,所以外部的a=1被屏蔽了,至于为什么a为undefined是因为变量声明会提前.而a被赋值的步骤在cons…
JavaScript易错知识点整理1.变量作用域上方的函数作用域中声明并赋值了a,且在console之上,所以遵循就近原则输出a等于2. 上方的函数作用域中虽然声明并赋值了a,但位于console之下,a变量被提升,输出时已声明但尚未被赋值,所以输出undefined.上方的函数作用域中a被重新赋值,未被重新声明,且位于console之下,所以输出全局作用域中的a.上方函数作用域中使用了ES6的let重新声明了变量b,而let不同于var其不存在变量提升的功能,所以输出报错b is not de…