一个考查作用域以及闭包的题目

news/2024/6/28 22:41:17

var a = 2;
var func = (function(){

var a = 3;
return function(){a++;console.log(a);
}

})();

func();
func();

1.涉及的知识点:
(1)JS变量的作用域
(2)闭包
2.变量的作用域,通俗来说就是变量所能起到作用的范围,也就是变量能被访问到的范围。
对于变量的作用域的理解,有一下几点需要了解的:
(1)变量的作用域不是“块级”,而是以“函数”为作用域

 这个所说的的“块级”,指的是距离“代码”最近的代码块。比如举个C#的例子:public void Param(){var a = 1;if(a==1){var b = c;}}变量a的作用域就是 Param()这个代码快,而变量b的作用域的作用域就是if所表示的代码块。来看个JavaScript的例子:function param () {{var a = "liyunhua"}console.log(a); // 输出 liyunhua}console.log(a) // error变量a在params()中都是可以被访问的,而出了param()的范围就会报错。

(2)变量的覆盖:“一个作用域中存在一个与外层作用域的同名变量,那么在内部作用域以及其内部的所有的作用域中都访问不到外面的变量”--摘自《深入理解JavaScript》

        这句话还是比较好理解的。这里就不做解释了。理解了上面的两点,那么在立即执行函数表达式(IIFE)中,a的初始值就是3,并且不会影响到外部作用域变量a的值。执行函数(IIFE)中,a的初始值就是3,并且不会影响到外部作用域变量a的值。
3.闭包闭包的东西太多,这里就以题论题,不会过多地讲述闭包的知识点。有兴趣的朋友,可以去这个链接了解 (https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures)。这里说闭包的一个作用:使函数可以维持其创建时所在作用域。怎么理解这句话呢?也就是说一个函数离开了“创建时的作用域”,但是其还是会和这个作用域以及这个函数外部的作用域相关联,也就是说“变量”依旧是那个“变量”以这个题目为参照,那么结果就很明了了。

http://lihuaxi.xjx100.cn/news/236046.html

相关文章

4.65FTP服务4.66测试登录FTP

2019独角兽企业重金招聘Python工程师标准>>> FTP服务 测试登录FTP 4.65FTP服务 文件传输协议(FTP),可以上传和下载文件。比如我们可以把Windows上的文件shan上传到Linux,也可以把Linux上的文件下载到Windows上。 Cent…

平台级 SAAS 架构的基础:统一身份管理系统

为什么80%的码农都做不了架构师?>>> > 业内在用户统一身份认证及授权管理领域,主要关注 4 个方面:集中账号管理(Account)、集中认证管理(Authentication)、集中授权管理&#xf…

iOS之runtime详解api(三)

第一篇我们讲了关于Class和Category的api,第二篇讲了关于Method的api,这一篇来讲关于Ivar和Property。 4.objc_ivar or Ivar 首先,我们还是先找到能打印出Ivar信息的函数: const char * _Nullable ivar_getName(Ivar _Nonnull v) …

P4722 【模板】最大流

P4722 【模板】最大流 加强版 / 预流推进 今日心血来潮&#xff0c;打算学习hlpp 然后学了一阵子。发现反向边建错了。容量并不是0.qwq 然后就荒废了一晚上。 算法流程的话。有时间补上 #include<cstdio> #include<algorithm> #include<iostream> #include&l…

机器学习03-神经网络

目录 一、非线性估值Non-Linear Hypothesis 二、神经网络建模 Neural Network 三、复习逻辑回归问题矩阵式 3.1 没有进行正则化 3.2 进行正则化 四、神经网络的代价函数 4.1 符号约定Notation 4.2 代价函数 五、反向传播算法 Backpropagation Alg 5.1 任务 5.2 一个…

数据结构-栈与队列

栈的定义 栈是限定仅在表尾进行插入和删除操作的线性表 我们把允许插入和删除的一端称为栈顶 (top) &#xff0c;另一端称为栈底 (bottom) &#xff0c;不含任何数据元素的栈称为空栈。 栈又称为后进先出 (Last In Filrst Out) 的线性表&#xff0c;简称LIFO结构。 理解栈的定义…

法院判决:优步无罪,无人车安全员可能面临过失杀人控诉

据路透社报道&#xff0c;负责优步无人车在亚利桑那州致人死亡事件调查的律师事务所发布公开信宣布&#xff0c;优步在事故中“不承担刑事责任”&#xff0c;但是当时在车上的安全员Rafaela Vasquez要接受进一步调查&#xff0c;可能面临车辆过失杀人罪指控。2018年3月&#xf…

【转载】pycharm远程调试配置

pycharm远程调试配置https://www.cnblogs.com/liangjiongyao/p/8794324.html