1.使用var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象; 2.使用let声明的变量,其作用域为该语句所在的代码块内,不存在变量提升; 先说以下什么是变量提升和函数提升吧: (1)、变量提升: ES6出现之前,ES5只有全局作用域和函数作用域的概念,并没有块级作用域这个概念,变量提升即:变量声明提升到它...
第一步骤是读取js代码,将所有变量声明和函数声明提升到全局作用域的顶端,即所谓的变量提升和函数提升,划重点只是提升变量声明,并不将赋值初始化提升。 第二步骤是运行代码,从上至下运行。 注意的点有: 其实函数提升是优先于变量提升的,同名的变量和函数同时声明了,首先执行的是函数的声明 输出结果是: 声明了同名的...
目前已知条件是,变量声明会提升到变量赋值之前,所以我们可以先将变量声明放到前两位,暂时不管其内部顺序:
第一步骤是读取js代码,将所有变量声明和函数声明提升到全局作用域的顶端,即所谓的变量提升和函数提升,划重点只是提升变量声明,并不将赋值初始化提升。 第二步骤是运行代码,从上至下运行。 注意的点有: 其实函数提升是优先于变量提升的,同名的变量和函数同时声明了,首先执行的是函数的声明 输出结果是: 声明了同名的...