首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏WebJ2EE

    JS:this、hoisting、precedence

    这一次,我将总结 JS 中几个容易出错的点: 提升(hoisting); this 绑定; 运算符优先级与结合性; 1. 提升(hoisting) 关键点: JS 引擎在执行代码之前会对代码进行编译,这一阶段会优先处理包括变量、函数在内的所有声明(提升就发生在这个时候)。

    54430发布于 2019-07-19
  • 来自专栏编程微刊

    什么是hoisting

    Hoisting 是 JavaScript 中的一个特性,它指的是变量和函数声明在代码执行之前会被"提升"(Hoist)到它们所在作用域的顶部。这意味着你可以在声明变量或函数之前就使用它们。 具体来说,Hoisting 的工作原理如下: 变量声明提升: 使用 var 声明的变量会被提升到它所在作用域的顶部,但赋值部分不会被提升。 下面是一个例子,演示 Hoisting 的工作原理: console.log(x); // 输出 undefined var x = 5; foo(); // 输出 "Hello, world!" 理解 Hoisting 有助于你更好地理解 JavaScript 的工作原理,并编写出更加可靠和预期的代码。

    26600编辑于 2025-05-25
  • 来自专栏自译文章/自学记录

    JavaScript Scoping and Hoisting

    如果你理解了作用域,hoisting(提前)对你来说会好理解许多。 上述阐述覆盖了hoisting的基本情况,事实上并不像看起来的那样复杂。当然,JavaScript中的this指针,在某些特殊的场合下,是有点复杂的。 既然你已经了解了作用域和hoisting,那么在JavaScript中对于编写代码,它们(作用域和hoisting)意味着什么? 我发现,想要了解这些‘事情(scoping,hoisting)’是如何运作的 ,直接查阅ECMAScript Standard (pdf)往往是最有帮助的。 本文翻译自:http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html 转载请注明出处

    76920发布于 2019-08-26
  • 来自专栏编程微刊

    JavaScript 中的Hoisting是什么?

    在JavaScript中,Hoisting(变量提升)是指在代码执行之前,JavaScript引擎将变量和函数的声明提升到当前作用域的顶部的行为。

    89030编辑于 2023-10-23
  • 来自专栏IMWeb前端团队

    通过Scope Hoisting优化Webpack输出

    本文作者:IMWeb 吴浩麟 原文出处:IMWeb社区 未经同意,禁止转载 Scope Hoisting 可以让 Webpack 打包出来的代码文件更小、运行的更快, 它又译作 "作用域提升" 单从名字上看不出 Scope Hoisting 到底做了什么,下面来详细介绍它。 认识 Scope Hoisting 让我们先来看看在没有 Scope Hoisting 之前 Webpack 的打包方式。 由于 Scope Hoisting 需要分析出模块之间的依赖关系,因此源码必须采用 ES6 模块化语句,不然它将无法生效。 原因和4-10 使用 TreeShaking 中介绍的类似。 使用 Scope Hoisting 要在 Webpack 中使用 Scope Hoisting 非常简单,因为这是 Webpack 内置的功能,只需要配置一个插件,相关代码如下: const ModuleConcatenationPlugin

    90420发布于 2019-12-03
  • 来自专栏FEWY

    谈谈 JavaScript 中的 声明提前(hoisting

    版权声明:本文为博主原创文章,欢迎转载,转载请注明出处。 https://blog.csdn.net/FE_dev/article/details/68943341

    95520发布于 2019-05-28
  • 来自专栏Tecvan

    Webpack 性能系列五:使用 Scope Hoisting

    一、什么是 Scope Hoisting 默认情况下,经过 Webpack 打包后的模块资源会被组织成一个个函数形式,例如: 关于打包产物形态的更多知识,可参考前文《Webpack 原理系列八:产物转译打包逻辑 例如上述示例经过 Scope Hoisting 优化后,生成代码: ((__unused_webpack_module, __webpack_exports__, __webpack_require__ /src/index.js console.log(common); }) 二、使用 Scope Hoisting 2.1 开启 Scope Hoisting 特性 Webpack 提供了三种方法开启 ,导致 Scope Hoisting 失效,例如: // common.js module.exports = 'common'; // index.js import common from '. /common'; 上例中,由于 common.js 使用 CommonJS 导入模块内容,Scope Hoisting 失效,两个模块无法合并。

    1.7K10编辑于 2021-12-09
  • 来自专栏前端自习课

    了不起的 Webpack Scope Hoisting 学习指南

    Scope Hoisting 是 webpack3 的新功能,直译为 "作用域提升",它可以让 webpack 打包出来的代码文件更小,运行更快。 三、Scope Hoisting 原理 Scope Hoisting 的实现原理其实很简单:分析出模块之间的依赖关系,尽可能将打散的模块合并到一个函数中,前提是不能造成代码冗余。 [build-result-comparison.png] 四、Scope Hoisting 使用方式 1. Hoisting,它对我们项目优化非常有帮助,但平常又很少会去注意。 六、参考文章 《通过Scope Hoisting优化Webpack输出》  《webpack 的 scope hoisting 是什么?》 

    67700发布于 2020-07-12
  • 来自专栏码力全开

    动图学 JavaScript 之:声明提升(Hoisting

    ,里面有一些堪称神奇的特性,初学者碰到后可能会满脸黑人问号,今天要介绍的就是其中的一个特性:声明提升(Hoisting)。 JS 之:作用域链(Scope Chain) 动图学 JS 之:事件循环(Event Loop) 动图学 JS 之:JavaScript 引擎 参考资料 JavaScript Visualized Hoisting

    68520发布于 2019-12-17
  • 来自专栏黄腾霄的博客

    2020-1-9-为什么JavaScript需要hoisting

    不知道同学们在学习JavaScript时,有没有对JavaScript的“提升”(hoisting)这个概念感到困惑。 ---- 什么是“提升”(hoisting) 我们提到hoisting的时候专指JavaScript中的一种场景: 对JavaScript的编译期间,文件中的函数,var定义的变量等的声明会被提升至命名空间 Hoisting in Details hoisting - Why does JavaScript hoist variables? - Stack Overflow Advance JavaScript: Why hoisting? more history: var hoisting was an implementation artifact. function hoisting was better motivated: https

    84520发布于 2020-06-10
  • 来自专栏前端自习课

    【Webpack】654- 了不起的 Webpack Scope Hoisting 学习指南

    一、什么是 Scope Hoisting Scope Hoisting 是 webpack3 的新功能,直译为 "「作用域提升」",它可以让 webpack 打包出来的「代码文件更小」,「运行更快」。 三、Scope Hoisting 原理 Scope Hoisting 的实现原理其实很简单:分析出模块之间的依赖关系,尽可能将打散的模块合并到一个函数中,前提是不能造成代码冗余。 四、Scope Hoisting 使用方式 1. 自动启用 在 webpack 的 mode 设置为 production 时,会默认自动启用 Scope Hooting。 Hoisting,它对我们项目优化非常有帮助,但平常又很少会去注意。 六、参考文章 《通过Scope Hoisting优化Webpack输出》 《webpack 的 scope hoisting 是什么?》

    1.2K20发布于 2020-07-16
  • 来自专栏前端达人

    我被Hoisting坑过无数次,才搞明白JavaScript这个致命陷阱

    这些"灵异事件"的幕后黑手,就是JavaScript的Hoisting机制。 为什么每个程序员都要懂Hoisting? 我看过太多年轻开发者在面试时对Hoisting一知半解。 今天我要做的,就是把Hoisting从神秘的"黑魔法"变成你能完全掌控的工具。 第一层理解:Hoisting的本质是什么? 破除第一个迷思 很多人说"Hoisting就是变量声明被提到了作用域的顶部"。这个说法既对又不对。 这个过程,就是Hoisting。 关键点:只有"声明"被提升,"赋值"不会。 Hoisting不仅仅是JavaScript语言特性,它是理解代码执行模型的关键。

    12910编辑于 2026-03-12
  • 来自专栏分享技术

    变量提升

    Hoisting(变量提升)是 JavaScript 中的一种行为,它在编译阶段将变量和函数声明提升到其所在作用域的顶部。 这就是 JavaScript 中 hoisting 的魔力。这段代码正常工作是因为 notEqual() 通过函数声明创建,并被提升到作用域的顶部。好的,再来看一个例子并猜测它的输出。 Hoisting 影响变量的生命周期,包括 3 个步骤:声明 - 创建一个新的变量。初始化 - 用一个值初始化变量。使用 - 访问和使用变量的值。 实际上,Hoisting 最初是为函数而创建的,它对 var 的适用性只是副产品。 变量 name 的 hoisting 带有 let 和 const使用 let 和 const 声明的变量会被 hoist,但不会被初始化为默认值。

    45810编辑于 2023-12-12
  • JavaScript 函数定义

    函数提升(Hoisting) 在之前的教程中我们已经了解了 "hoisting(提升)"。 提升(Hoisting)是 JavaScript 默认将当前作用域提升到前面去的行为。 提升(Hoisting)应用在变量的声明与函数的声明。

    16710编辑于 2025-12-16
  • 来自专栏京程一灯

    Webpack3来了!

    Scope Hoisting, “magic comments”, and more! Scope Hoisting Scope Hoisting is the flagship feature of webpack 3. module.exports = { plugins: [ new webpack.optimize.ModuleConcatenationPlugin() ] }; Scope Hoisting Because scope hoisting will remove function wrappers around your modules, you may see some small size

    69840发布于 2019-03-28
  • 来自专栏前端面试1

    深入理解JS作用域链与执行上下文_2023-02-23

    变量提升: 变量提升( hoisting )。 关键字: 你读完下面内容就会明白标题的含义,先来一段超级简单的代码: <script type="text/javascript"> var str = 'Hello JavaScript hoisting '; console.log(str); // Hello JavaScript hoisting </script> 这段代码,很意外地简单,我们的到了想要的结果,在控制台打印出了: Hello JavaScript hoisting 。 这就是变量提升(hoisting ),它是指,浏览器在遇到 JS 执行环境的 初始化,引起的变量提前定义。

    70420编辑于 2023-02-23
  • 来自专栏前端开发面试

    深入理解JS作用域链与执行上下文

    变量提升:变量提升( hoisting )。 var 关键字:你读完下面内容就会明白标题的含义,先来一段超级简单的代码:<script type="text/javascript"> var str = 'Hello JavaScript hoisting '; console.log(str); // Hello JavaScript hoisting</script>这段代码,很意外地简单,我们的到了想要的结果,在控制台打印出了:Hello JavaScript hoisting 。 这就是变量提升(hoisting ),它是指,浏览器在遇到 JS 执行环境的 初始化,引起的变量提前定义。

    75440编辑于 2022-10-06
  • 来自专栏前端の进行时

    JavaScript-变量/函数声明提升

    二、变量声明提升 2.1 hoisting (1)由于变量声明(以及其他声明)总是在任意代码执行之前处理,所以在代码中的任意位置声明变量总是等效于在代码开头声明。 (2)这意味着变量可以在声明之前使用,这个行为叫做“hoisting”。“hoisting”就像是把所有的变量声明移动到函数或者全局代码的开头位置。 ?

    1.5K20发布于 2019-03-13
  • 来自专栏WebJ2EE

    【前端】:变量提升、this绑定、 优先级与关联性

    变量提升(Hoisting) 2. this 绑定 2.1. this 是什么? 2.2. this 绑定规则 3. 运算符优先级与关联性 4. 几道笔试题 1. 变量提升(Hoisting) Conceptually, for example, a strict definition of hoisting suggests that variable and : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence Hoisting : https://developer.mozilla.org/zh-CN/docs/Glossary/Hoisting Gentle Explanation of "this" in JavaScript

    64020发布于 2020-02-26
  • 来自专栏叽叽西

    JS 函数

    函数声明会进行声明提升(declaration hoisting),而函数表达式不会。 函数提升(Hoisting) 在之前的教程中我们已经了解了 "hoisting(提升)"。 提升(Hoisting)是 JavaScript 默认将当前作用域提升到前面去的的行为。 提升(Hoisting)应用在变量的声明与函数的声明。

    7.6K10编辑于 2022-05-17
领券