持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情
对于很多开发者来说,Hoisting是 JavaScript 的一种未知或常被忽视的行为。请努力在每个作用域的开头声明所有变量,避免出现不可挽回的bug哟~
Hoisting是什么
Hoisting 是 JavaScript 将所有声明提升到当前作用域顶部的默认行为(提升到当前脚本或当前函数的顶部)
JS函数和变量的声明总是会悄悄地“提升”到各个作用域,这时候就会引起;为了使得远离这些bug,许多开发者提倡在每一个作用域开头放一个单独变量声明。
例如
var a=666;
(function(){
alert(a);
var a=666;
}())
//undefined
其实实际上可以理解成:
var a =666;
(function(){
var a;
alert(a);
var a=666;
}())
//所以 undefined
- 我们习惯理解:将 var a = 666;看作一个声明
- 实际上 JavaScript 引擎理解:它将 var a 和 a = 666 当作两个单独的声明(第一个是预编译阶段的任务,而第二个则是执行阶段的任务,两个阶段的介绍可以参考大佬出处文章:blog.csdn.net/qq_38081746…
这意味着无论作用域中的声明出现在什么地方,都将在代码本身被执行前首先进行处理。 可以将这个过程形象地想象成所有的声明(变量和函数)都会被“移动”到各自作用域的最顶端,这个过程被称为提升。
写在最后
重新开始更文啦!最近忙了一段时间,终于继续可以学习!感谢大家的支持!我会继续努力坚持学习!养成了好习惯,每天必定会抽出时间多多少少学习前端知识~
以上习题&笔记从大佬们的论坛学习而来,特感谢大佬们的知识分享~ (学习技术知识,果然要看大佬们的技术博客,大家有好的推荐也欢迎指引我这个小白哈,感恩!)
附上学习链接,感谢这些大佬出题和解答: