🎶 Sym - 一款用 Java 实现的现代化社区(论坛/BBS/社交网络/博客)平台

📕 思源笔记 - 一款桌面端笔记应用,支持 Windows、Mac 和 Linux

🎸 Solo - B3log 分布式社区的博客端节点,欢迎加入下一代社区网络

♏ Vditor - 一款浏览器端的 Markdown 编辑器

提升在 JavaScript 中是如何工作的?

2019-01-20

回答

提升是 JavaScript 的一种机制,在编译阶段任意位置的变量和函数声明都会被放入内存中。也就是说不论函数和变量在何处被声明,他们的作用域是全局的还是局部的,他们的声明都会移动到作用域的顶部。

这里需要注意的是,他们的初始化并不会被提升。因此如下等同的两段代码片断都将输出 undefined

console.log(hoist) // undefined
var hoist = "value" 
var hoist
console.log(hoist)  // undefined
hoist = "value" 

同理,提升也允许你在函数声明之前调用他:

myFunction() // hello
function myFunction() {
  console.log("hello")
} 

但是函数表达式就不允许这样:

myFunction() // Uncaught TypeError: myFunction is not a function
var myFunction = function() {
  console.log("hello")
} 

加分回答

  • 提升是 JavaScript 中将声明移到作用域顶部的默认行为
  • 函数声明在变量声明之前被提升
  • 变量提升

返回总目录

每天 30 秒


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

留下你的脚步