作用域

闭包及一些demo

时光总嘲笑我的痴心妄想 提交于 2019-11-28 00:41:26
在一个函数b内定义的一个函数a里,a使用了其父级b的变量或者函数。这样闭包便形成了!! 作用 : 1. 获取函数内部的变量 2.将变量保存在内存中。3.定义私有变量,避免全局变量污染 注意 : 闭包一定是需要的时候使用,勿滥用,因为闭包在处理速度和内存消耗方面对脚本性能具有负面影响! 下面例子来源 MDN 阮一峰 廖雪峰 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>JS闭包Closures</title> </head> <body> <div> <p id="help">Helpful notes will appear here</p> <p>E-mail: <input type="text" id="email" name="email"></p> <p>Name: <input type="text" id="name" name="name"></p> <p>Age: <input type="text" id="age" name="age"></p> </div> </body> <script> //------------------------------------------------------------------------------- //闭包 /

对js闭包的粗浅理解

天涯浪子 提交于 2019-11-28 00:12:09
  只能是粗浅的,毕竟js用法太灵活。   首先抛概念:闭包(closure)是函数对象与变量作用域链在某种形式上的关联,是一种对变量的获取机制。这样写鬼能看懂。 所以要大致搞清三个东西:函数对象(function object)、作用域链(scope chain)以及它们如何关联(combination)   首先要建立一个印象,在js中,几乎所有的东西可以看作对象,除了null和undefined。比如常用的数组对象、日期对象、正则对象等。 var num = 123; // Number var arr = [1,2,3]; // Array var str = "hello"; // String   数字原始值可以看作Number对象,字符串原始值可看做String对象,数组原始值可看作Array对象。有的原始值还可直接调方法,如数组、正则,有的不行 [1,2,3].toString(); // 可以 /\w+/.toString(); // 可以 123.toString(); // 报错   比如数字,当用一个变量名呈接它时,或者加上括号,能够这样用 var num = 123; num.toString(); 123.toString(); // 报错,因解释器当成浮点数来解读 (123).toString(); // 可以   所以,函数也可以是一个对象

第四章 算法

爱⌒轻易说出口 提交于 2019-11-28 00:02:05
目录 第四章 算法 1.函数 2.直觉算法 3.分支和循环 4.递归 5.算法和上下文 6.面向对象 7.常用算法 1.函数 1.1 函数声明和定义 c++定义指令的方式是定义函数。函数是一个指令段落,一个程序是由若干个函数组成的,每个函数负责一部分的内容,通过函数可以把一个大任务分配成若干小任务,降低编程的难度。 函数定义的语法: 类型 标识符(参数列表){ 函数体 } 其中“参数列表”的语法: 类型 标识符,类型 标识符…… 类似变量定义,称为“形参”,用逗号分隔,可以有零到n个。 “函数体”可以是0到n条语句,语句可以是变量定义等,还可以我们没有接触过的其他语句。函数体就是生成运行指令的核心内容。 注意,函数并不需要分号结尾。 之前,我介绍过数据定义和数据声明的差别,那么函数的定义和声明有什么区别? 函数声明的形式是去除花括号组后,添加分号结尾。 函数声明的语法: 类型 标识符(参数列表); 1.2 调用函数 调用函数就等于跳转到该函数的第一条指令去执行该函数的指令,当该函数执行完毕后,就跳转回原先调用该函数的地方,继续执行接下来的指令。从形式上看,调用函数的语法是用“实参”代替“新参”的过程,例如: int F(int a, int b); 以下内容定义在函数作用域内: int x = 1; int y = 2; int z = F(1,2); 其中F(1,2

不同作用域的同名变量

混江龙づ霸主 提交于 2019-11-27 23:53:58
package main import “fmt” var a byte //全局变量 func main ( ) { //var a int //局部变量 //1.不同作用域允许定义同名变量 //2.使用变量的原则,就进原则 fmt.Printf("%T\n",a) //int { var a float32 fmt.Printf(“2:%T\n”,a) //float32 } test () } func test ( ) { fmt.Printf(“3:%T\n”,a) //byte(unit8) } 来源: CSDN 作者: 温柔梦9527 链接: https://blog.csdn.net/ymeng9527/article/details/103243364

python--函数

回眸只為那壹抹淺笑 提交于 2019-11-27 22:48:26
Python3 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 () 。 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 语法 Python 定义函数使用 def 关键字,一般格式如下: def 函数名(参数列表): 函数体 默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。 实例 让我们使用函数来输出"Hello World!": >>> def hello ( ) :    print ( " Hello World! " ) >>> hello ( ) Hello World ! >>> 更复杂点的应用,函数中带上参数变量: 实例 # 计算面积函数 def area ( width , height ) :   return

python函数参数作用域

穿精又带淫゛_ 提交于 2019-11-27 21:13:09
单词 func args kwargs globals locals 万能参数,仅限关键字参数 # 万能参数: *args, 约定俗称:args, # 函数定义时,*代表聚合。 他将所有的位置参数聚合成一个元组,赋值给了 args。 # 写一个函数:计算你传入函数的所有的数字的和。 # def func(*args): # count = 0 # for i in args: # count += i # return count # print(func(1,2,3,4,5,6,7)) # **kwargs # 函数的定义时: ** 将所有的关键字参数聚合到一个字典中,将这个字典赋值给了kwargs. # 形参角度:仅限关键字参数 (了解) 可以在默认参数前也可以在后面 一定要传参数,不传报错 # 形参角度最终的顺序:位置参数,*args,默认参数,仅限关键字参数,**kwargs # *的魔性用法 # **在函数的调用时,*代表打散。 def func(*args,**kwargs): print(args) # (1,2,3,22,33) print(kwargs) # func(*[1,2,3],*[22,33]) # func(1,2,3,22,33) # func(*'fjskdfsa',*'fkjdsal') # func(1,2,3,22,33) func(**{

Spring 核心技术(6)

删除回忆录丶 提交于 2019-11-27 20:58:48
接上篇: Spring 核心技术(5) version 5.1.8.RELEASE 1.5 Bean 作用域 创建 bean 定义时,你创建了一种用于创建 bean 定义中定义的类实例的方法。bean定义的设想是一个很重要的方法,因为它意味着,与一个类一样,你可以从以一种方式创建许多对象实例。 你不仅可以控制要插入到以特定 bean 定义创建的对象中的各种依赖项和配置值,还可以控制以特定bean定义创建的对象的作用域。这种方法功能强大且灵活,因为你可以选择通过配置创建的对象的作用域,而不必在 Java 类级别设定对象的作用域。Bean 可以被部署到定义的多个作用域之一中。Spring Framework 支持六个作用域,其中四个范围仅在使用支持 Web 的 ApplicationContext 时可用。你还可以创建 自定义范围 。 下表描述了支持的作用域: 作用域 描述 单例 (默认)将单个 bean 定义的作用域限定为每个 Spring IoC 容器的单个对象实例。 原型 将单个 bean 定义作用域限定为任意数量的对象实例。 请求 将单个 bean 定义作用域限定为单个 HTTP 请求的生命周期。也就是说,每个 HTTP 请求都有自己的 bean 实例,它是在单例 bean 定义的后面创建的。仅在支持 web 的 Spring ApplicationContext 中可用。

C++中的C

雨燕双飞 提交于 2019-11-27 20:24:08
前言 因为C++是以C为基础的,所以要用C++编程就必须熟悉C的语法。 C语言的学习可以学习K & R C的《C程序设计语言》 创建函数 Q: 函数原型? A: 标准C/C++有一个特征叫函数原型(function prototyping)。调用函数时,编译器使用原型确保正确传递参数并且正确处理返回值,如果调用函数时程序员出错,编译器就会捕获这个错误。 A: 下面是一个声明函数原型的例子: int translate(float x, float y, float z); 在函数原型中声明变量时,对于同样形式的变量,不能写成 translate(float x, y, z) 这种形式,而必须指明每一个参数的类型。在函数声明中,下面的形式是可以接受的: int translate(float, float, float); 因为在调用函数时,编译器只会检查类型,所以使用标识符只是为了使别人阅读代码时更加清晰。 Q: 空参和可变参数列表? A: 如果有一个空的参数列表,可以在C++中声明这个函数为func(),它告诉编译器,这里有0个参数。应该意识到这只意味着C++中是空参数列表,在C中它意味着不确定的参数数目,这是C语言中的漏洞,因为在这种情况下不能进行类型检查。 A: 在C/C++中,声明func(void)都意味着空的参数列表。 A: 可变的参数列表(variable

函数基础-名称空间和作用域

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-27 19:48:15
函数内部的函数只能在函数内部调用,不能在函数外部调用?! 原因: 名称空间问题!!! 一丶名称空间 名称空间(name spaces):在内存管理那一章节时,我们曾说到变量的创建其实就是在内存中开辟了一个新的空间。但是我们一直在回避变量名的存储,其实在内存中有一块内存存储变量名与变量间的绑定关系的空间,而这个空间称为名称空间。 1.1 内置名称空间 内置名称空间:存放Pyhton解释器自带的名字,如int、float、len 生命周期:在解释器启动时生效,在解释器关闭时失效 1.2 全局名称空间 全局名称空间:除了内置和局部的名字之外,其余都存放在全局名称空间,如下面代码中的 x、func、l、z 生命周期:在文件执行时生效,在文件执行结束后失效 x = 1 def func(): pass l = [1, 2] if 3 > 2: if 4 > 3: z = 3 1.3 局部名称空间 局部名称空间:用于存放函数调用期间函数体产生的名字,如下面代码的f2 生命周期:在文件执行时函数调用期间时生效,在函数执行结束后失效 def f1(): def f2(): print('from f2') f2() f1() 1.4 加载顺序 由于.py文件是由Python解释器打开的,因此一定是在Python解释器中的内置名称空间加载结束后,文件才开始打开,这个时候才会产生全局名称空间

js知识点大杂烩

天涯浪子 提交于 2019-11-27 19:29:02
1.构造函数与普通函数 箭头函数的三种区别 1.构造函数的this指向实例化后的那个对象 2.普通函数的this指向调用该函数的那个对象 3.箭头函数的this指向创建时的那个对象,而不是引用时的那个对象 2.什么是闭包 可以打破作用域链的规则 3.什么是作用域链 当前作用域-->父级作用域-->全局作用域 形成的作用域链条 4.什么是内存泄漏 内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着 5.什么是垃圾回收机制 JS的垃圾回收机制是为了以防内存泄漏,内存泄漏的含义就是当已经不需要某块内存时这块内存还存在着,垃圾回收机制就是间歇的不定期的寻找到不再使用的变量,并释放掉它们所指向的内存。 6.原型 所有的构造函数都有一个prototype属性,这个属性就称为原型对象 所有的构造函数new出来的对象都有一个__proto__ 属性 , 这个属性也对应着一个对象就是原型对象  原型对象上的属性和方法不能直接被子类访问(继承中实现) Javascript的继承机制基于原型,而不是Class类 7.原型链 实例对象和原型之间的连接 就称为原型链 原型模式的执行流程 : 首先在实例上查找 找到后就返回 再去在构造函数的原型上查找 找到后就返回 继续去 OBject.prototype 上查找 找到后就返回 8.原型链和作用域链的区别 原型链是作用在构造函数上