Sym - 一个用 Java 实现的现代化社区平台 • 源码注册

Pipe - 小而美的开源博客平台 • 体验皮肤
Solo - 一个用 Java 实现的博客系统,为你或你的团队创建个博客吧! • 源码下载
Wide - 一个基于 Web 的 Go 语言 IDE • 教程试用

提升在 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 秒


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

留下你的脚步