问:1.什么叫变量名提升 答:在js里 var 和function声明的变量或者函数可以在我们声明之前去使用他们,这种现象就叫变量名提升。 问:2.提升的原理是什么 答:js会把代码分为可执行代码和非可执行代码(声明代码:在代码评估时就会用了,而在执行栈里不会执行声明代码) 真正的变量提升本质:可执行代码执行之前,会有一个代码评估阶段,也被叫做预解析阶段,他会读取我们要执行的源代码,将所有以var function声明或者let,const声明的变量,事先给我们创建好,并且绑定在内存中,真正执行代码时,通过当前作用域找到绑定好的这些变量或者是函数了,var有初始化过程undifined,function也有初始化过程,let,const没有初始化过程,所以不能读取,读取就报错。 牢记: 在js中可将代码分为两类 1.声明代码 2.可执行代码(加断点进行调试) var let(声明变量)const function class 或者异步函数async-function有关键字出现的都是声明代码 不能加断点进行调试 meta作用:给网页提供辅助信息的 (常见视口:meta 指定缩放 禁止用户缩放行为) var function有提升 let const class无提升 有意义的是var和function声明的 var初始化 undefined值 function:(函数名初始化变量名)初始化对象 2.为什么let const没有变量提升 使用let const 声明变量时 在代码评估时,也会事先执行创建好,但是不会初始化值。 因此在let const 声明值前去使用该变量会报错。
标签:function,const,代码,js,let,提升,var,变量名,声明 From: https://www.cnblogs.com/w-y-l-1/p/16908782.html