js 作用域和变量详解

发布时间 - 2026-01-10 23:06:15    点击率:

一、说起变量的提升呢,首先我们先看一段简单的代码

<!doctype html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
 <script>
  var v = 'hello world';
  alert(v);
 </script>
</body>
</html>

以上代码执行的结果是hello world

然后在看一段代码:

<!doctype html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
 <script>
  var v='Hello World';
  (function(){
   alert(v);
  })();
 </script>
</body>
</html>

执行的结果和第一段代码一样hello world

好了,接下来在看这段代码:

<!doctype html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
 <script>
  var v='Hello World';
  (function(){
   alert(v);
   var v='I love you';
   alert(v);
  })();
 </script>
</body>
</html>

以上代码执行的结果: 第一个弹出的是undefined;第二个结果是I love you。为什么会有这样的结果呢?

这就跟刚开始提到的变量提升有关系哦~~~下面我们来做下总结:

最后一段代码展现了2个知识点:

1、变量提升

2、作用域链

首先来说作用域链,js访问一个变量时会优先在该作用域内(访问时的那个作用域)寻找是否声明过这个变量,如果该变量已经存在,则直接使用它的值,否则会寻找该作用域的‘父作用域/上级作用域',依次类推,直到找到全局作用域为止。

关于变量提升是指:js在解析的时候总是会将var,function这类关键词的声明语句提升至作用域的最顶部(注意:这里只会提升声明的部分,赋值不会被提升)

所以,由此看来,上述的那段代码就等于:

<!doctype html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Document</title>
</head>
<body>
 <script>
  var v='Hello World';
  (function () {
   var v; //先将该作用域下的变量提升,但没有赋值
   alert(v); //所以此时是undefined
   var v='I love you';
   alert(v); //I love you
  })();
 </script>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js  # 作用域  # 变量  # JavaScript中变量的作用域详解  # JS中作用域以及变量范围分析  # JavaScript变量作用域_动力节点Java学院整理  # javascript 的变量、作用域和内存问题  # 一起来了解JavaScript的变量作用域  # 关键词  # 的是  # 好了  # 结果是  # 第一个  # 是指  # 由此看来  # 这段  # 这就  # 只会  # 这类  # 第二个  # 弹出  # 刚开始  # 那段  # 来做  # 会将  # 则会  # 就等于  # 将该 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  Laravel怎么在Controller之外的地方验证数据  Laravel如何配置Horizon来管理队列?(安装和使用)  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  历史网站制作软件,华为如何找回被删除的网站?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Laravel如何使用.env文件管理环境变量?(最佳实践)  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)  如何基于PHP生成高效IDC网络公司建站源码?  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel如何处理异常和错误?(Handler示例)  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  ,南京靠谱的征婚网站?  如何用y主机助手快速搭建网站?  如何用虚拟主机快速搭建网站?详细步骤解析  新三国志曹操传主线渭水交兵攻略  如何在万网ECS上快速搭建专属网站?  Bootstrap整体框架之JavaScript插件架构  济南网站建设制作公司,室内设计网站一般都有哪些功能?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  linux top下的 minerd 木马清除方法  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  米侠浏览器网页背景异常怎么办 米侠显示修复  EditPlus中的正则表达式 实战(4)  如何彻底删除建站之星生成的Banner?  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  北京的网站制作公司有哪些,哪个视频网站最好?  浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】  如何在搬瓦工VPS快速搭建网站?  如何在万网利用已有域名快速建站?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  制作公司内部网站有哪些,内网如何建网站?  如何在Windows 2008云服务器安全搭建网站?  如何用好域名打造高点击率的自主建站?  公司门户网站制作流程,华为官网怎么做?  在线制作视频的网站有哪些,电脑如何制作视频短片?  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  香港服务器建站指南:免备案优势与SEO优化技巧全解析  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何用PHP工具快速搭建高效网站?  如何续费美橙建站之星域名及服务?  Laravel如何创建和注册中间件_Laravel中间件编写与应用流程