JavaScript基础知识介绍——作用域(静态作用域、全局作用域、IIFE、函数作用域和提升、严格模式)
作用域决定了变量、常量和参数被定义的时间和位置当某个变量的作用域是一个给定的函数时必须要记住形参只有在函数被调用的时候才存在编程实参。一个函数可能会被调用多次每次函数调用开始时参数才是真实存在的在函数返回后参数就失去作用域了变量和常量也只有在创建后才存在。也就是说在使用let或const声明之前他们是没有作用域的var是特例作用域或者可见性指的是当前可见并且可以被正在执行的代码块称作执行上下文访问的标识符在JavaScript中作用域是静态的这意味着只能通过阅读源代码就能确定变量的作用域静态作用域静态作用域在某个作用域内定义了某个函数而不是调用函数该作用域包含所有变量也在该函数的作用域内在JavaScript中静态作用域适用于全局作用域、块作用域、以及函数作用域全局作用域在全局作用域中生命的一切在当前程序的作用域的所有作用域内都是可用的在全局作用域中声明的变量叫全局变量谨慎地使用——努力避免依赖全局作用域块作用域let和const关键字声明的变量名处在块作用域中块作用域指的是那些仅仅在代码块内有效的变量console.log(before block); { console.log(inside block); const x 3; //打印3 console.log(x); } console.log(outside block; x${x}); //ReferenceError: x未定义解析这里有一个独立的块块通常是控制流语句的一部分例如if或for但定义独立的块也是合法的。在块内定义了变量x一旦出了此块x就不在作用域内就会被认为是未定义的变量屏蔽变量屏蔽有时候也叫做变量阴影即一个相同名字的变量会将外部作用域的变量屏蔽起来作用域的层次结构可以在原有的作用域中进入一个新的作用域。此时会建立一个作用域链来决定哪些变量在作用域中当前作用域链中的所有变量都在作用域内并且只要它们没有被屏蔽都是可以被访问的即时调用函数表达式函数表达式允许创建即时调用函数表达式IIFEIIFE声明了一个函数并立即执行该函数(function() { //使用函数表达式创建了一个匿名函数然后立即调用该函数 //这里为IIFE代码 })();IIFE好处任何内部信息都有自己的作用域并且因为它本身就是函数他还可以向作用域外传递信息比较常见的返回值有数组、对象以及函数可以打印出自己被调用的次数而且次数不会被篡改函数作用域和提升使用let声明变量变量只在声明之后才存在。而使用var声明变量在当前作用域中任意地方都可用甚至可以在声明前使用PS未声明的变量和值为undefined的变量不是同一个概念。使用未声明的变量会报错但可以安全使用语句存在且值为undefined的变量//使用let时如果引用的变量未声明将会得到一个错误 x; //ReferenceErrorx未定义 let x 3; //永远不会执行——因为错误终止了程序 //而用var声明的变量可以在声明前被引用 x; //undefined var x 3; x; //3原因var声明的变量采用了提升机制JavaScript会扫描整个作用域函数或者全局作用域任何使用var声明的变量都会被提升至作用域的顶部使用var声明的变量JavaScript不会关心它是否有重复声明函数提升类似于var声明的变量函数声明也会被提升至它们作用域的顶部这允许在函数声明之前调用严格模式严格模式阻止隐式全局变量在开始编写代码之前单独插入一行字符串use strict单引号或双引号都可以就可以启动严格模式为了避免麻烦可将所有代码封装宰割立即执行的函数中(function() { use strict; //所有代码从这里开始...代码会按照严格模式执行 })();

相关新闻

数字序列11111的传播特性与文化内涵解析

数字序列11111的传播特性与文化内涵解析

1. 项目概述"11111"这个看似简单的数字序列,实际上蕴含着丰富的文化内涵和网络传播特性。作为一名长期观察网络文化现象的从业者,我发现这串数字在不同语境下展现出截然不同的意义和传播路径。从技术传播角度看,"11111"作…

2026/10/20 1:48:32 阅读更多 →
docker查看挂载目录Volume

docker查看挂载目录Volume

转: 使用docker inspect命令查看container的volume信息,按照书本上面敲,发现一直报错: 使用命令如下: sudo docker inspect --format "{{.Volumes}}" 676b04bec7c5错误信息为 Template parsing error: template: :1:2: …

2026/10/20 1:48:34 阅读更多 →
如何3小时完成AI小说推文创作:TaleStreamAI终极自动化方案指南

如何3小时完成AI小说推文创作:TaleStreamAI终极自动化方案指南

如何3小时完成AI小说推文创作:TaleStreamAI终极自动化方案指南 【免费下载链接】TaleStreamAI AI小说推文全自动工作流,自动从ID到视频 项目地址: https://gitcode.com/gh_mirrors/ta/TaleStreamAI TaleStreamAI是一款革命性的AI小说推文全自动工…

2026/10/20 1:48:38 阅读更多 →

最新新闻

PYQT5+TF Lite桌面AI部署实战:手写识别工具落地全链路

PYQT5+TF Lite桌面AI部署实战:手写识别工具落地全链路

1. 这不是“又一个Demo”,而是一条可复用的桌面AI落地路径我第一次在某高校实验室看到这个需求时,导师只说了两句话:“学生交上来的手写数字识别作业,全是Jupyter Notebook跑通就交差;但真要让非技术老师也能点开就用&…

2026/10/20 7:06:52 阅读更多 →
从一句话下单到AI付:AI正成为消费基础设施

从一句话下单到AI付:AI正成为消费基础设施

把这三条消息放在一起看,就很有意思了。一条宏观数据:我国网民规模达到11.25亿人,互联网普及率突破80%;两条行业动态:阿里千问在春节期间靠“一句话下单”跑出近2亿次交互,“京东AI付”正式上线。三件事如果…

2026/10/20 7:06:52 阅读更多 →
LangChain4j声明式Agent:动态代理与函数回调机制深度解析

LangChain4j声明式Agent:动态代理与函数回调机制深度解析

1. 为什么值得深挖 LangChain4j 的声明式 Agent第一次看到 LangChain4j 的Agent注解和AiServices那套写法时,我的反应是"这也太魔法了"。你只写一个接口,方法上标几个注解,框架就能自动帮你把大模型的函数调用、参数解析、结果回填…

2026/10/20 7:06:52 阅读更多 →
细粒度情感分析实战:SemEval-2014 Task 4数据集解析与BERT预处理

细粒度情感分析实战:SemEval-2014 Task 4数据集解析与BERT预处理

简介:这是一份用于细粒度情感分析与方面级情感分析的标准评测数据集,面向NLP研究者、算法工程师及高校相关专业学生,可支撑情感词典构建、情感目标抽取、情感极性判断以及深度学习模型的训练与评估。压缩包共11个文件,以10个XML标…

2026/10/20 7:06:52 阅读更多 →
AI辅助专著撰写全流程:从大纲设计到排版输出的实战工具链

AI辅助专著撰写全流程:从大纲设计到排版输出的实战工具链

写一本专著,工程量到底有多大?过来人都知道,它跟写十篇论文完全是两码事:章节之间的逻辑闭环、术语前后一致、参考文献成体系、图表编号不重不漏、单章两三万字起步……光靠人肉硬扛,写到后半程很容易“前面写什么忘了…

2026/10/20 7:06:52 阅读更多 →
分号不是标点,是代码执行的节拍器与团队契约

分号不是标点,是代码执行的节拍器与团队契约

1. 项目概述:分号不是语法装饰,而是程序员的呼吸节奏“实用经验 40 标示语句结束的分号的思考”——这个标题乍看像一句被遗忘在旧教材角落的语法提醒,甚至有点过时。但如果你最近调试过一段看似逻辑完美、却在某行末尾莫名报错的 JavaScript…

2026/10/20 7:05:52 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →