CHAT with me on luogo!

变量提升和函数提升

首先使用var声明变量会造成变量提升,毫无疑问变量a会被置于代码块顶部,但是下方使用function关键字声明了函数a,函数声明也会提升至代码块顶部,而且优先级更高。

所以实际代码等价于
1
2
3
4
function a () {}
var a
a = 10
console.log(typeof a)

变量a会覆盖函数a,输出结果为number。
那如果这里使用关键词let呢,代码变为

 
1
2
3
let a = 10
function a () {}
console.log(typeof a)
这里明显会报错。前面提到,函数声明会优先于变量声明,会被提升至代码块顶部,所以会先声明function a ,再执行let a = 10;,但是a已被声明过,不能再使用let 关键字进行重声明。所以这里应当注意函数声明提升的问题,即便let声明变量的语句被置于代码块顶部,但是需要注意函数声明提升。
posted @ 2022-05-14 10:51  qsad阿斯顿  阅读(16)  评论(0编辑  收藏  举报