首页 > 解决方案 > Javascript 提升和附加功能

问题描述

大家好,

这不是一个具体的问题,而是一个普遍的问题。

特别是,我正在准备与 Javascript 相关的面试。在 Glassdoor 上,我看到有人之前提到过,“什么是 Javascript 提升?” 是一个被问到的问题。

本质上,我想知道我应该研究什么类型的 Javascript 材料才能深入了解它。

现在,理想情况下,您会告诉我读一本书并尽可能多地了解 Javascript,例如如果有人问我什么是提升,我将能够“自然地”回答它。

然而,这引发了我一个重要的想法,因为我知道我的时间有限,能够“聪明”地学习面试将是未来面试的一项好技能,这可能不一定会测试 Javascript 知识。

提升是否被视为 Javascript 的“功能”?这种现象叫什么,是否有专门突出一种语言与大多数其他语言的主要特征的书籍。

这是一个非常模糊的问题,但本质上我想找到一种方法,让我可以深入了解编程语言的特性,而不必从一开始就学习。

希望这是有道理的!

最好的问候,安迪

标签: javascript

解决方案


我想你可以称之为功能。过去,您需要确保在调用每个函数之前定义了每个函数,并且所有内容都将按照编写的顺序进行编译:想想类似var myCat = new Cat(); function Cat() { ... }的东西,代码会在标记处抛出错误new Cat()(类似的东西undefined is not a constructor),因为,在new Cat()执行时,Cat函数从未定义过。它稍后在代码中定义。

使用提升,变量声明在编译时加载到内存中,您可以在声明之前初始化和使用变量/函数,这意味着您不必担心这种冲突。这就是它的全部。它实际上是一种编译时优化 - 让人们的生活更轻松,例如for (var i = 0; i < array.length; i++)由于Array.prototype.forEach内置的​​原因,数组迭代在很大程度上被弃用(在闭包编译代码之外等)。

您可以在MDN 的 Web Docs上阅读有关函数提升的更多信息。

// call to catName before declaration
catName("Chloe");

function catName(name) {
  console.log(`My cat's name is ${name}!`);
}


推荐阅读