JavaScript变量公告提升

  • 时间:2021-03-20 20:41 作者:前小小 来源: 阅读:699
  • 扫一扫,手机访问
摘要:变量提升JavaScript引擎的工作方式是,先解析代码,获取所有被公告的变量,而后再一行一行地运行。这造成的结果,就是所有的变量的公告语句,都会被提升到代码的头部,这就叫做变量提升。示例:console.log(a) // undefinedvar a = 1function b() { c

变量提升

JavaScript引擎的工作方式是,先解析代码,获取所有被公告的变量,而后再一行一行地运行。这造成的结果,就是所有的变量的公告语句,都会被提升到代码的头部,这就叫做变量提升。

示例:

console.log(a) // undefinedvar a = 1function b() {    console.log(a)}b() // 1

上面的代码实际执行顺序是这样的:

第一步 引擎将var a = 1拆解为var a = undefined和 a = 1,并将var a = undefined放到最顶端,a = 1还在原来的位置;

var a = undefinedconsole.log(a) // undefineda = 1function b() {    console.log(a)}b() // 1

第二步 就是执行,因而js引擎一行一行从上往下执行就造成了当前的结果,这就叫变量提升。

公告提升

当前作用域内的公告都会提升到作用域的最前面,包括变量和函数的公告

(function(){  var a = "1";  var f = function(){};  var b = "2";  var c = "3";})();

变量a,f,b,c的公告会被提升到函数作用域的最前面,相似如下:

(function(){  var a,f,b,c;  a = "1";  f = function(){};  b = "2";  c = "3";})();

请注意函数表达式并没有被提升,这也是函数表达式与函数公告的区别。进一步看二者的区别:

(function(){  //var f1,function f2(){}; //hoisting,被隐式提升的公告   f1(); //ReferenceError: f1 is not defined  f2();   var f1 = function(){};  function f2(){}})();

上面代码中函数公告f2被提升,所以在前面调用f2是没问题的。尽管变量f1也被提升,但f1提升后的值为undefined,其真正的初始值是在执行到函数表达式处被赋予的。所以只有公告是被提升的。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】2FA验证器 验证码如何登录(2024-04-01 20:18)
【系统环境|】怎么做才能建设好外贸网站?(2023-12-20 10:05)
【系统环境|数据库】 潮玩宇宙游戏道具收集方法(2023-12-12 16:13)
【系统环境|】遥遥领先!青否数字人直播系统5.0发布,支持真人接管实时驱动!(2023-10-12 17:31)
【系统环境|服务器应用】克隆自己的数字人形象需要几步?(2023-09-20 17:13)
【系统环境|】Tiktok登录教程(2023-02-13 14:17)
【系统环境|】ZORRO佐罗软件安装教程及一键新机使用方法详细简介(2023-02-10 21:56)
【系统环境|】阿里云 centos 云盘扩容命令(2023-01-10 16:35)
【系统环境|】补单系统搭建补单源码搭建(2022-05-18 11:35)
【系统环境|服务器应用】高端显卡再度登上热搜,竟然是因为“断崖式”的降价(2022-04-12 19:47)
手机二维码手机访问领取大礼包
返回顶部