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中间件编写与应用流程

