`

转帖:关于Hoisting & Scoping

 
阅读更多
提升和作用域:

Hoisting & Scoping\

Ben cherry的一篇

第一篇转帖的留言部分:
关于 Hoisting 那部分,有两点值得说明:

1. Hoisting 的作用范围是随着函数作用域的。我理解在这里尚未讲到函数作用域,不过可以提一句提醒读者注意,然后链接至作用域的部分进一步探讨;

2. “Hoisting 只对 `var` 声明的变量有效”,不尽然如此。变量声明的提升并非 hoisting 的全部,JavaScript 有四种让声明在作用域内获得提升的途径(按优先级):

-语言定义的声明,如 this 和 arguments。你不能在作用域内重新定义叫做 this 的变量,是因为 this 是语言自动定义的声明,并且它的优先级最高,也就是被 Hoisting 到最顶上了,没人能覆盖它

-形式参数。虽然我们无需用 var 来修饰形式参数,但是形式参数的确也是变量,并且被自动提升到次高的优先级

-函数声明。除了 var 以外,function declaration 也可以定义新的命名,并且同样会被 hoisting 至作用域顶部,仅次于前两者

-最后,是本文提到的常规变量,也就是 var 声明的变量
分享到:
评论

相关推荐

    javascript_hoisting_scoping

    JavaScript中的提升(Hoisting)与作用域(Scoping)是编程中非常重要的概念,它们直接影响着代码的执行和变量的访问。在这个主题中,我们将深入探讨这两个关键知识点,并结合HTML的上下文来理解它们在实际开发中的...

    理解 JavaScript Scoping & Hoisting(二)

    在JavaScript中,Scoping(作用域)和Hoisting(提升)是两个非常重要的概念,它们对于理解和编写正确的JavaScript代码至关重要。让我们详细地探讨一下这两个概念。 首先,作用域决定了变量和函数的可见性和生命...

    JavaScript Scoping and Hoisting 翻译

    首先,作用域(Scoping)是指在程序中定义变量的区域,决定了这些变量的可访问性和生命周期。JavaScript有两种主要的作用域类型:函数级作用域(function-level scope)和块级作用域(block-level scope)。在...

    Hoisting 3.html

    Hoisting 3

    Hoisting 1.html

    Hoisting 1

    Hoisting 4.html

    Hoisting 4

    Hoisting 5.html

    Hoisting 5

    Hoisting 2.html

    Hoisting 2

    JavaScript习题.docx

    - 变量可以在使用前声明,JavaScript 允许变量提升(hoisting),但建议总是先声明再使用。 - 在ES6以后,还有`let`和`const`用于块级作用域的变量声明。 3. **运算符**: - 表达式的类型不仅取决于运算符,还取...

    function对象的hoisting特性

    页面前端技术 javascript的function对象的hoisting特性详解

    深入解读JavaScript中的Hoisting机制

    JavaScript中的Hoisting(提升)机制是指JavaScript引擎在运行代码之前,会预先处理一些特定的语句。它涉及到变量声明和函数声明的提升,但不包括变量的初始化或者函数表达式的提升。为了深入理解Hoisting机制,我们...

    JavaScript中变量提升 Hoisting

    ~~ [翻译]JavaScript Scoping and Hoisting 希望得到大家谅解。 一。案发现场 我们先看一段很简单的代码: 代码如下: var v=’Hello World’; alert(v); 这个没有疑问吧,弹出“Hello World”。OK,我们继续...

    JavaScript提升机制Hoisting详解

    前言 刚接触到JavaScript的时候,便知道JavaScript是按顺序执行的,是如浏览器的解析DOM树一样的流程,解析DOM结构的时候,如果遇到JS脚本或者外联脚本便会停止解析,继续下载脚本之后,执行脚本,然后再解析DOM。...

    Javascript学习笔记之函数篇(六) : 作用域与命名空间

    2. **变量提升(Hoisting)** - JavaScript引擎在执行代码前会先进行变量提升,即将`var`声明的变量和函数声明提升到其所在作用域的顶部。这意味着无论变量或函数在哪里定义,它们实际上都会被移动到作用域的开始处...

    GB_20181-2006 Safety requirement of hoisting machine and shaft winder矿井提升设备安全规定

    《GB 20181-2006 安全要求 of hoisting machine and shaft winder 矿井提升设备安全规定》是一项针对矿井提升机的安全国家标准,该标准由中华人民共和国国家质量监督检验检疫总局(GAQSIQ)和标准化管理委员会(SAC...

    ydkjsNotes:关于“您不知道JavaScript”系列的一些说明(强烈推荐!)

    函数表达式和函数声明的区别在于 hoisting(提升)以及匿名与命名的区别。 4. **闭包**:闭包是一种特殊的内部函数,可以访问外部函数的作用域,即使外部函数已经执行完毕。它是实现私有变量和封装的重要机制。 5....

    JavaScript的变量声明提升问题浅析(Hoisting)

    JavaScript中的变量声明提升,也称为Hoisting,是一个关键的概念,尤其对于初学者来说可能有些棘手。Hoisting是指JavaScript在代码执行前会把所有的变量声明(`var`、`let`、`const`,不过`let`和`const`的提升效果...

    JavaScript中Hoisting详解 (变量提升与函数声明提升)

    本文主要给大家介绍了关于JavaScript中Hoisting(变量提升与函数声明提升)的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 如何将 函数声明 / 变量 “移动” 到作用域的顶部。 术语 ...

Global site tag (gtag.js) - Google Analytics