作用域

变量的使用

末鹿安然 提交于 2019-12-21 01:59:05
/* 变量的使用 1.java定义变量的格式:数据类型 变量名 =变量值; 2.说明: 变量必须先声明 后使用 变量都定义在其作用域内 在作用域内 他是有效的 换句话说 出了作用域 就失效了 同一个作用域内 不可以声明两个同名的变量 */ class VariableTest { public static void main(String[] args) { //变量的定义 int myAge=12; //变量的使用 System.out.println(myAge); //编译错误:使用myNumber之前并未定义过myNumber //System.out.println(myNumber); //变量的声明 int myNumber; //使用myNumber之前并赋值过myNumber //System.out.println(myNumber); //变量的赋值 myNumber=1001; //编译不通过 //System.out.println(myClass); //不可以在同一个作用域内定义同名的变量 //int myAge=22; } public void method(){ int myClass=1; } } //class VariableTest {}//逆向思维 反证法 来源: https://www.cnblogs.com/xuezha/p

浅谈JS的作用域链(二)

ε祈祈猫儿з 提交于 2019-12-21 01:44:21
上一篇文章中介绍了Execution Context中的三个重要部分:VO/AO,scope chain和this,并详细的介绍了VO/AO在JavaScript代码执行中的表现。 本文就看看Execution Context中的scope chain。 作用域 开始介绍作用域链之前,先看看JavaScript中的作用域(scope)。在很多语言中(C++,C#,Java),作用域都是通过代码块(由{}包起来的代码)来决定的, 但是,在JavaScript作用域是跟函数相关的,也可以说成是function-based。 例如,当for循环这个代码块结束后,依然可以访问变量"i"。 1 2 3 4 5 for (var i = 0 ; i < 3 ; i++){ console.log(i); } console.log(i); //3 对于作用域,又可以分为全局作用域(Global scope)和局部作用域(Local scpoe)。 全局作用域 中的对象可以在代码的任何地方访问,一般来说,下面情况的对象会在全局作用域中: 最外层函数和在最外层函数外面定义的变量 没有通过关键字"var"声明的变量 浏览器中,window对象的属性 局部作用域 又被称为函数作用域(Function scope),所有的变量和函数只能在作用域内部使用。 1 2 3 4 5 6 7 8 9 var

循环异步事件

微笑、不失礼 提交于 2019-12-21 01:03:08
for(var i=0 ;i<5; i++){ setTimeout(function(){ console.log(i) },0) } //5,5,5,5,5 此处i是全局作用域 每次循环 新的i都会冲刷掉旧的i 好比皇位更替 for(let i=0 ;i<5; i++){ setTimeout(function(){ console.log(i) },0) } //0,1,2,3,4 此处i是函数作用域 每次循环 新的i都给自己开辟一块属于只自己的作用域 好比各个封地的诸侯 来源: 51CTO 作者: 喝醉的熊 链接: https://blog.51cto.com/13550695/2460527

Eclipse中10个最有用的快捷键组合

╄→гoц情女王★ 提交于 2019-12-20 16:40:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合。通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升。 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了。这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个字母,比如applic*.xml。美中不足的是这组快捷键并非在所有视图下都能用。 2. ctrl+o:快速outline 如果想要查看当前类的方法或某个特定方法,但又不想把代码拉上拉下,也不想使用查找功能的话,就用ctrl+o吧。它可以列出当前类中的所有方法及属性,你只需输入你想要查询的方法名,点击enter就能够直接跳转至你想去的位置。 3. ctrl+e:快速转换编辑器 这组快捷键将帮助你在打开的编辑器之间浏览。使用ctrl+page down或ctrl+page up可以浏览前后的选项卡,但是在很多文件打开的状态下,ctrl+e会更加有效率。 4. ctrl+2,L:为本地变量赋值 开发过程中,我常常先编写方法,如Calendar.getInstance(),然后通过ctrl+2快捷键将方法的计算结果赋值于一个本地变量之上。 这样我节省了输入类名

eclipse最有用快捷键整理

泄露秘密 提交于 2019-12-20 16:33:45
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 经常使用eclipse进行开发,不掌握快捷键不行啊,在此整理了一些快捷键,大家要灵活运用啊。。。 注:红色标出来的是经常使用到的快捷键 Ctrl+1 快速修复(最经典的快捷键,就不用多说了) Ctrl+Shift+O 自动导入所需要的包(这个用的次数也相当多) Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加) Ctrl+Alt+↑ 复制当前行到上一行(复制增加) Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了) Alt+↑ 当前行和上面一行交互位置(同上) alt+shift+a 块操作 Alt+← 前一个编辑的页面 Alt+→ 下一个编辑的页面(当然是针对上面那条来说了) Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性 Shift+Enter 在当前行的下一行插入空行(这时鼠标可以在当前行的任一位置,不一定是最后) Shift+Ctrl+Enter 在当前行插入空行(原理同上条) Ctrl+Q 定位到最后编辑的地方 Ctrl+L 定位在某行 (对于程序超过100的人就有福音了) Ctrl+M 最大化当前的Edit或View (再按则反之) Ctrl+/ 注释当前行,再按则取消注释 Ctrl+O 快速显示 OutLine

变量的作用域

那年仲夏 提交于 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

2019年常见面试题

為{幸葍}努か 提交于 2019-12-20 09:09:31
1 . 原始类型有哪几种?null 是对象吗?原始数据类型和复杂数据类型存储有什么区别? 原始类型有 6 种,分别是 undefined,null,bool,string,number,symbol(ES6 新增)。 虽然 typeof null 返回的值是 object, 但是 null 不是对象,而是基本数据类型的一种。 原始数据类型存储在栈内存,存储的是值。 复杂数据类型的地址存储再占内存,指向存储在堆内存的值。当我们把对象赋值给另外一个变量的时候,复制的是地址,指向同一块内存空间,当其中一个对象改变时,另一个对象也会变化。 2.typeof 是否正确判断类型? instanceof 呢? instanceof 的实现原理是什么? 首先 typeof 能够正确的判断基本数据类型,但是除了 null, typeof null 输出的是对象。 但是对象来说,typeof 不能正确的判断其类型, typeof 一个函数可以输出 'function', 而除此之外,输出的全是 object, 这种情况下,我们无法准确的知道对象的类型。 instanceof 可以准确的判断复杂数据类型,但是不能正确判断基本数据类型。正确判断数据类型请戳: https://github.com/YvetteLau/Blog/blob/master/JS/data-type.js instanceof

执行环境及作用域链

早过忘川 提交于 2019-12-20 04:25:52
  执行环境(execution context,为简单起见,有时也被称为“ 环境 ”)是JavaScript 中最为重用的一个概念。执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个与之关联的 变量对象 (variable object),环境中定义的所有变量和函数都保存在这个对象中。虽然我们编写的代码无法访问这个变量,但解析器在处理数据时会在后台使用它。   全局执行环境是最外围的一个执行环境。根据 ECMAScript 实现所在的宿主环境不同,表示执行环境的对象也不一样。外 Web浏览器中,全局执行环境被认为是 window 对象,因此所有全局变量和函数都是作为window 对象的属性和方法创建的。某个执行环境中的所有代码执行完毕后,该环境被销毁,保存在其中的所有变量和函数定义也随之销毁(全局执行环境直到应用程序退出——例如关闭网页或浏览器——时才会被销毁)。   每个函数都有自己的 执行环境 。当执行流进入一个函数时,函数的环境就会被推入一个环境栈中。而在函数执行之后,栈将其环境弹出,把控制权返回给之前的执行环境。ECMAScript 程序中的执行流正是由这个方便的机制控制着。   当代码在一个环境中执行时,会创建变量对象的一个 作用域链 (scope chain)。作用域链的用途,是保证对执行环境有权访问的所有变量和函数的有序访问

Python函数的作用域规则和闭包

穿精又带淫゛_ 提交于 2019-12-20 03:40:13
作用域规则 命名空间是从名称到对象的映射, Python中主要是通过字典实现的,主要有以下几个命名空间: 内置命名空间,包含一些内置函数和内置异常的名称,在Python解释器启动时创建,一直保存到解释器退出。 内置命名实际上存在于一个叫__builtins__的模块中,可以通过globals()['__builtins__'].__dict__查看其中的内置函数和内置异常。 全局命名空间,在 读入函数所在的模块时创建, 通常情况下,模块命名空间也会一直保存到解释器退出。可以通过内置函数globals()查看。 局部命名空间,在函数调用时创建,其中包含函数参数的名称和函数体内赋值的变量名称。 在函数返回或者引发了一个函数内部没有处理的异常时删除, 每个递归调用有它们自己的局部命名空间。可以通过内置函数locals()查看。 python解析变量名的时候, 首先搜索局部命名空间。如果没有找到匹配的名称,它就会搜索全局命名空间。如果解释器在全局命名空间中也找不到匹配值,最终会检查内置命名空间。如果仍然找不到,就会引发NameError异常。 不同命名空间内的名称绝对没有任何关系,比如: a = 42 def foo(): a = 13 print "globals: %s" % globals() print "locals: %s" % locals() return a foo()

命名空间的作用

て烟熏妆下的殇ゞ 提交于 2019-12-20 02:44:10
来源:https://blog.csdn.net/LF_2016/article/details/51930792 一、为什么使用命名空间 一个大型的工程往往是由若干个人独立完成的,不同的人分别完成不同的部分,最后再组合成一个完整的程序。由于各个头文件是由不同的人设计的,有可能在不同的头文件中用了相同的名字来命名所定义的类或函数,这样在程序中就会出现名字冲突。不仅如此,有可能我们自己定义的名字会与C++库中的名字发生冲突。 名字冲突就是在同一个作用域中有两个或多个同名的实体,为了解决命名冲突 ,C++中引入了命名空间,所谓命名空间就是一个可以由用户自己定义的作用域,在不同的作用域中可以定义相同名字的变量,互不干扰,系统能够区分它们。 二、什么是命名空间 命名空间是程序设计者命名的内存区域,程序设计者根据需指定一些有名字的空间域,把一些全局实体分别存放到各个命名空间中,从而与其他全局实体分隔开。 通俗的说,每个名字空间都是一个名字空间域,存放在名字空间域中的全局实体只在本空间域内有效。名字空间对全局实体加以域的限制,从而合理的解决命名冲突。 例: namespace na { int a; char c; } 则 a和c只在na的作用域内有效。 在声明一个命名空间时,花括弧内不仅可以包含变量,而且还可以包含以下类型: 变量(可以带有初始化) 常量 函数(可以是定义或声明) 结构体 类