iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >JavaScript中的声明提升是什么
  • 265
分享到

JavaScript中的声明提升是什么

2023-07-04 15:07:37 265人浏览 薄情痞子
摘要

这篇文章主要讲解了“javascript中的声明提升是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中的声明提升是什么”吧!声明提升(hosting)是 JavaSc

这篇文章主要讲解了“javascript中的声明提升是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中的声明提升是什么”吧!

声明提升(hosting)是 JavaScript 解析器的一个特性,它会把代码中的函数、变量声明语句作用提取到它所在作用域的最前面。

函数的提升

JavaScript 是支持在函数声明之前调用函数的。

say();function say() {  console.log("Hello");}

解析器会扫描作用域内的代码,把函数声明提取到执行代码的前面。所以,解析器是这样看这段代码的:

function say() {  console.log("Hello");}say();

除了普通函数,async function, function *, async function * 也有相同的提升效果。

var 变量声明提升

var 关键字的变量声明会被提升,但变量的赋值不会被提升。

console.log(foo); // undefinedvar foo = "bar";console.log(foo); // 'bar'

以上代码的解析结果为:

var foo;console.log(foo);foo = "bar";console.log(foo);

这可能会导致一些奇怪的问题:

var x = "x in global";(function () {  // 这里期望读取全局变量  console.log(x); // 结果为undefined.     // 在函数内某处  var x = "x in function";})();

在过去,为了规避这种奇怪的提升,大家普遍把var 声明写在作用域的最前面。

var x='x';var y='y';function (){    var x;    var foo;    // ...}

当然,现在我们选择不用 var,改用更合理的 letconst

letconst 变量声明和死区

那么,letconst 就不存在变量提升了吗?—— 未必。

看这个例子:

const x = "x in global";(function () {  // 这里期望读取全局变量  console.log(x); // ReferenceError: Cannot access 'x' before initialization    // 在函数内某处  const x = "x in function";})();

执行报错,说明 const x = "x in function"; 一行影响了作用域内的上方区域代码。

解析器会扫描当前作用域下的 constlet 声明,在声明语句之前使用变量名都会触发 ReferenceError。这样可以避免上面提过的 var 提升问题和模糊不清的代码范式。

class 关键字也有同样的效果,new 一个未声明的类也会发生 ReferenceError

new MyClass(); // ReferenceError: Cannot access 'MyClass' before initializationclass MyClass {}

有人认为这种情况不属于提升,毕竟声明和赋值都没有提前;也有人认为这些语句在执行之前就产生了影响,其作用提升了。个人偏向后者,这是对(变量和类名)标识符的提升。

感谢各位的阅读,以上就是“JavaScript中的声明提升是什么”的内容了,经过本文的学习后,相信大家对JavaScript中的声明提升是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: JavaScript中的声明提升是什么

本文链接: https://www.lsjlt.com/news/345821.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaScript中的声明提升是什么
    这篇文章主要讲解了“JavaScript中的声明提升是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript中的声明提升是什么”吧!声明提升(hosting)是 JavaSc...
    99+
    2023-07-04
  • 一起聊聊JavaScript中的声明提升
    以上就是一起聊聊JavaScript中的声明提升的详细内容,更多请关注编程网其它相关文章!...
    99+
    2022-11-22
    JavaScript
  • JavaScript中的声明提升实例详解
    目录函数的提升var 变量声明提升let 和 const 变量声明和死区总结函数的提升 声明提升(hosting)是 JavaScript 解析器的一个特性,它会把代码中的函数、变量...
    99+
    2022-11-16
    JavaScript 声明提升 JavaScript 声明
  • JavaScript声明提升实例分析
    本篇内容主要讲解“JavaScript声明提升实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript声明提升实例分析”吧!   ...
    99+
    2024-04-02
  • JavaScript变量声明如何提升
    这篇文章主要讲解了“JavaScript变量声明如何提升”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript变量声明如何提升”吧!变量一个变量...
    99+
    2024-04-02
  • javascript中声明变量的方法是什么
    这篇文章主要介绍“javascript中声明变量的方法是什么”,在日常操作中,相信很多人在javascript中声明变量的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
  • Javascript变量函数声明提升深刻理解
    目录前言:变量提升函数提升为什么要提升?最佳实践总结前言: Javascript变量函数声明提升(Hoisting)是在 Javascript 中执行上下文工作方式的一种认识(也可以...
    99+
    2024-04-02
  • JavaScript声明变量的简写方法是什么
    这篇文章主要介绍了JavaScript声明变量的简写方法是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。声明变量简写方法简写方法:JavaScript有什么特点1、js属...
    99+
    2023-06-27
  • JavaScript的三种声明函数方式是什么
    这篇“JavaScript的三种声明函数方式是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
    99+
    2024-04-02
  • html中新的Doctype声明是什么
    这篇文章给大家分享的是有关html中新的Doctype声明是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。新的Doctype声明XHTML的声明太长了,我相信很少会有前端开发人员能手写出这个Doctype声明...
    99+
    2023-06-27
  • javascript中的函数怎么声明
    这篇文章主要介绍了javascript中的函数怎么声明,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 在js中,...
    99+
    2024-04-02
  • JavaScript函数提升指的是什么
    这篇文章主要介绍了JavaScript函数提升指的是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript函数提升指的是什么文章都会有所收获,下面我们一起来看看...
    99+
    2024-04-02
  • javascript变量声明var,let,const的区别是什么
    本文小编为大家详细介绍“javascript变量声明var,let,const的区别是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“javascript变量声明var,let,const的区别是什么”文章能帮助大家解决疑惑,下面跟着小...
    99+
    2023-06-30
  • java中collection声明的方法是什么
    在Java中,Collection是一个接口,声明了一些常用的方法,包括: 添加和删除元素的方法: boolean add(E...
    99+
    2023-10-26
    java collection
  • 怎么声明JavaScript中函数
    本篇内容主要讲解“怎么声明JavaScript中函数”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么声明JavaScript中函数”吧! ...
    99+
    2024-04-02
  • sql中变量声明的命令是什么
    sql 中变量声明的命令为 declare,用于声明变量以存储临时数据。语法:declare variable_name data_type [(size)] [default defa...
    99+
    2024-05-07
  • Golang中变量声明的方法是什么
    在Golang中,变量声明的方法有两种: 使用var关键字声明变量,语法如下: var variableName dataTyp...
    99+
    2024-03-14
    Golang
  • 怎么在javascript中声明函数
    怎么在javascript中声明函数?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、使用函数的结构函数在这种方法中,函数是在函数结构函数的帮助下创建的。技术上,这种方法比使用...
    99+
    2023-06-15
  • C#中声明数组的语法是什么
    这篇文章主要介绍“C#中声明数组的语法是什么”,在日常操作中,相信很多人在C#中声明数组的语法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中声明数组的语法是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • JavaScript中的变量声明怎么理解
    这篇文章的内容主要围绕JavaScript中的变量声明怎么理解进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!变量ECMAScript中,变量可以保存...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作