局部变量

变量的作用域

那年仲夏 提交于 2019-12-20 09:56:35
变量的作用域: 即变量的作用范围 (1)全局变量:在整个页面的恩和位置都可以访问到. a.在函数声明变量. b.变量未定义即使用. c.window对象的属性. (2)局部变量:在函数内声明的变量(包括参数位置). 注: es5是没有块级作用域的,建议多使用局部变量省内存(局部变量生命周期短) 少全局变量(全局变量生命周期长). 来源: CSDN 作者: zdw_0817 链接: https://blog.csdn.net/zdw_0817/article/details/103626564

闭包(closure)

允我心安 提交于 2019-12-19 06:35:23
大牛的讲解, 点击   我们首先需要有作用域的概念, 点击    那么什么是闭包? 官方的解释是:闭包是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 广义上的闭包就是指一个变量在它自身作用域的被使用了,就叫发生了闭包。粗鲁地理解:闭包就是能够读取其它函数内部变量的函数。 在js中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单粗暴地理解成“定义在一个函数内部的函数”,即一个函数嵌套了另一个函数。 闭包是很多语言都具备的特性,在js中,闭包主要涉及到js的几个其他的特性: 作用域链,垃圾(内存)回收机制,函数嵌套......   由于作用域的关系,我们在函数外部是无法直接访问到函数内部的变量的,但是函数内部可以把这个变量传给全局变量或者返回出来,这样外部作用域就可以访问函数内部作用域的变量了;   简单的说,闭包就是有权限访问另一个函数内部作用域的变量的函数; javascript具有自动垃圾回收机制,函数运行完之后,其内部的变量和数据会被销毁; 但是闭包就是在外部可以访问此函数内部作用域的变量,所以闭包的一个特点就是 script type ="text/javascript" > function outer(){ var a = 1 ; function inner(){ return a ++ ; }

成员变量、局部变量、静态变量

房东的猫 提交于 2019-12-18 20:54:31
成员变量、局部变量、静态变量的区别 成员变量 局部变量 静态变量 定义位置 在类中 , 方法外 方法中 , 或者方法的形式参数 在类中 , 方法外 初始化值 有默认初始化值 无 , 先定义 , 赋值后才能使用 有默认初始化值 调用方式 对象调用 --- 对象调用,类名调用 存储位置 堆中 栈中 方法区 生命周期 与对象共存亡 与方法共存亡 与类共存亡 别名 实例变量 --- 类变量 总结:   尽管三者的本质都是变量,可是使用时却有相当大的区别,稍不留神就可能陷入陷阱。且先记住:在一个类中,如果一个变量能够用来描述一个类的属性,那就定义为成员变量,否则,它就应该定义为局部变量。而如果一个变量在全局中都能使用(某个内容是被所有对象所共享),那么我们就可以把这个变量用static来修饰,即为静态变量。(还要注意它与静态方法的紧密联系,这里且不细述了) 来源: https://www.cnblogs.com/langren1992/p/9529851.html

Python—全局变量、局部变量、匿名函数

独自空忆成欢 提交于 2019-12-18 10:50:04
局部变量和全局变量 1 college1 = 'JMU'    #全局变量 2 def change_name(name): 3 college1 = 'LiGong' #局部变量,此函数是其作用域 4 # global school #可以在函数内定义全局变量,这样在函数外调用函数体内的school则不会报错。但是千万不要这么干!不要在函数体内定义全局变量 5 # school = 'jmu' 6 print("before change:%s"%name,college1) 7 name = 'GKX' #局部变量,此函数是其作用域 8 print('After change:%s'%name) 9 10 name = 'gkx' 11 change_name(name) 12 print('now name is:%s'%name) 13 print(college1) 14 >>>>>> 15 before change:gkx LiGong  #在函数体内部college的值是 ‘LiGong’,在其作用域内 16 After change:GKX 17 now name is:gkx       #在函数外name的值还是gkx 18 JMU              #在函数外college的值还是JMU 局部变量不能改全局变量主要是只字符串和数值,一些复杂的数据结构

Javascript 闭包与高阶函数 ( 一 )

只愿长相守 提交于 2019-12-18 07:01:26
上个月,淡丶无欲 让我写一期关于 闭包 的随笔,其实惭愧,我对闭包也是略知一二 ,不能给出一个很好的解释,担心自己讲不出个所以然来。 所以带着学习的目的来写一写,如有错误,忘不吝赐教 。 为什么要有闭包? 初识闭包时,,我一直在想,为什么只有JS有闭包,c#,c++ 为什么没有 ?? 1. 封装局部变量 看下面一个例子,计算 斐波那契 数。 为了能够重用数据,一个通用做法就是将计算过的数据缓存起来,但缓存的数据对外是不可见的 。 看下面的 c# 代码 : public static class Fibonacci{ public static Fibonacci(){ cache[0] = 1; cache[1] = 1; } private static IList<int> cache = new List<int>(1000,-1); public static int Calc(n){ if(cache[n] != -1){ return cache[n]; }else{ return cache[n] = Calc(n-1) + Calc(n-2); } } } 快两年没写c#了, 很撇脚,囧 ,但是在这类静态语言,这种方法很合适 。 看JS 怎么写 var cache = [1, 1]; var calc = function(){ return cache[n] !=

类的无参方法

試著忘記壹切 提交于 2019-12-18 03:31:16
定义类的方法 方法的名称 方法返回值的类型 方法的主体 调用类方法的两种形式 同一个类中的方法,直接使用 “方法名()”调用 不同类的方法,先创建对象,再使用“对象名.方法名()”调用 成员变量和局部变量的不同点 作用域不同 成员变量在整个类内都是可见的 局部变量仅限于定义它的方法内 初始值不同 会为成员变量赋初值 不会给局部变量赋初值 在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级 注释符 单行注释:// 多行注释:/* * / JavaDoc注释:/ * * */注释JavaDoc能够从源代码中抽取类、属性、方法等的注释 如果方法无返回值此方法必须有输出语句如果方法没有返回值,一般此方法无输出语句参数分为形参和实参 定义方法的格式 修饰符 返回值 方法名//第二个首字母大写 ([ 可以为空]){ } 来源: CSDN 作者: 吃茄子的猫 链接: https://blog.csdn.net/cqzdmm/article/details/103588151

Java类的无参方法

随声附和 提交于 2019-12-18 01:59:25
Java类的无参方法: 一、定义类的方法必须包括: public 返回值类型 方法名() { //方法的主体 } 1、方法的名称。 2、方法返回值的类型。 return 表达式;作用: 跳出方法、返回结果。 3、方法的主体。 二、调用类方法的两种形式: 1、同一个类中的方法,直接使用“方法名()”调用。 2、不同类的方法,先创建对象,再使用“对象名.方法名()”调用。 三、成员变量和局部变量的不同点: 1、作用域不同。 成员变量在整个类内都是可见的。 局部变量仅限于定义它的方法内。 2、初始值不同。 会为成员变量赋初值。 不会给局部变量赋初值。 3、在同一个类中,成员变量和局部变量同名时,局部变量具有更高的优先级。 四、注释符: 1、单行注释:// 2、多行注释: /* * / 3、JavaDoc注释: / ** * */------------------------------------------------------------------------------------------------ 来源: CSDN 作者: 空白— 链接: https://blog.csdn.net/weixin_45864941/article/details/103586326

类的无参方法

穿精又带淫゛_ 提交于 2019-12-18 01:48:56
类的无参方法 定义类的方法 1、方法的名称 2、方法返回值的类型 3、方法的主体 调用类方法的方式 在同一个类中直接调用,方法名(); 在不同类中调用,先创建对象,再对象名.方法名(); 方法返回值 return 表达式; 作用:跳出方法、返回结果 成员变量与局部变量 成员变量:在类中 局部变量:在方法中 1、区别: 作用域不同:局部变量的作用域仅限于定义它的方法 成员变量的作用域在整个类内部都是可见的 2、初始值不同:Java会给成员变量一个初始值,可以不定义初值 Java不会给局部变量赋予初始值,需要定义初值 3、在同一个类中,局部变量的优先级高 面向对象啊 类的方法实现某个特定的功能,其他不需要它是如何实现的,只需要调用就可以 注释方法 单行注释:// 多行注释:/* */ javadoc注释:/** */ ,用来注释类、属性、方法等 来源: CSDN 作者: 我是超级小白 链接: https://blog.csdn.net/lady88888888/article/details/103587914

华为软件研发面试题1

…衆ロ難τιáo~ 提交于 2019-12-17 16:54:38
1 、局部变量能否和全局变量重名?   答:能,局部会屏蔽全局。要用全局变量,需要使用 "::"   局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。    2 、如何引用一个已经定义过的全局变量?   答: extern   可以用引用头文件的方式,也可以用 extern 关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用 extern 方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。    3 、全局变量可不可以定义在可被多个 .C 文件包含的头文件中?为什么?   答:可以,在不同的 C 文件中以 static 形式来声明同名全局变量。   可以在不同的 C 文件中声明同名的全局变量,前提是其中只能有一个 C 文件中对此变量赋初值,此时连接不会出错    4 、语句 for( ; 1 ; ) 有什么问题?它是什么意思?   答:和 while(1) 相同。    5 、 do …… while 和 while …… do 有什么区别?   答:前一个循环一遍再判断,后一个判断以后再循环    6

C语言面试题(四)--------------------网上题目

别来无恙 提交于 2019-12-17 16:14:31
1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 注:此题我在Xcode上用了来,的确,如果是两个循环的话,都可以用同名的变量,这在objective-c中是可以的,但我不记得在Java和C中是否可以了 2、如何引用一个已经定义过的全局变量? 答:extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个编写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。 3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 答:可以,在不同的C文件中以static形式来声明同名全局变量。 可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错. 4、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答: 1) 全局变量