作用域

SSM 初始化得到项目路径

微笑、不失礼 提交于 2020-01-27 09:15:31
实现监听器 // 监听器 public class PathListener implements ServletContextListener { // 初始化方法 @Override public void contextInitialized ( ServletContextEvent servletContextEvent ) { // 获取服务的上下文 ServletContext servletContext = servletContextEvent . getServletContext ( ) ; // 得到上下文路径 String contextPath = servletContext . getContextPath ( ) ; // 设置到请求作用域 servletContext . setAttribute ( "PATH" , contextPath ) ; } // 销毁方法 @Override public void contextDestroyed ( ServletContextEvent servletContextEvent ) { } } 得到作用域里的路径 web.xml 配置监听类 来源: CSDN 作者: qq_42913304 链接: https://blog.csdn.net/qq_42913304/article

python命名空间与作用域

岁酱吖の 提交于 2020-01-27 05:26:20
命名空间与作用域 一、命名空间: 保存程序中的变量名和值的地方,本质是一个字典,其作用是用来记录变量名称和值,变量名在字典中充当key,值充当value。 命名空间分为三种: 1.局部命名空间:函数都有自己的命名空间,记录函数的变量,参数。2.全局命名空间:模块拥有的空间,记录了模块变量,函数,类和导入模块。3.内置命名空间:任何模块均可访问,放着内置函数和异常。 对于命名空间在执行的过程需要注意两个容易混淆的东西: 第一个代码加载过程: 内置命名空间(程序运行前加载)­---->全局命名空间(当程序运行的时候加载全局命名空间)-----­>局部命名空间(函数调用的时候加载) 第二个查找顺序: 当前 (嵌套的或 lambda) 函数的命名空间中搜索 -->在父函数的命名空间中搜索 -->模块命名空间中搜索–>在内置命名空间中搜索 (在哪里查找到就停止搜索) 代码: name = "snowdream" #全局命名空间 def func ( ) : #局部命名空间 name = "snow" print ( name ) func ( ) 结果: 二、作用域: 是变量在程序中的可应用范围这里访问 的顺序容易与命名空间混淆,我们知道作用域分为四类:局部作用域(Loca)、嵌套作用域(Enclosing)、全局作用域(Global)、内建作用域(Built­in)。其中访问顺序为

函数进阶

好久不见. 提交于 2020-01-27 04:33:43
命名空间和作用域 命名空间的本质:存放名字与值的绑定关系 python之禅 在python之禅中提到过:命名空间是一种绝妙的理念,让我们尽情的使用发挥吧! 命名空间一共分为三种:   全局命名空间   局部命名空间   内置命名空间 *内置命名空间 中存放了python解释器为我们提供的名字:input,print,str,list,tuple...它们都是我们熟悉的,拿过来就可以用的方法。 三种命名空间之间的加载与取值顺序: 加载顺序:内置命名空间(程序运行前加载)->全局命名空间(程序运行中:从上到下加载)->局部命名空间(程序运行中:调用时才加载) 取值:   在局部调用:局部命名空间->全局命名空间->内置命名空间 x = 1 def f(x): print(x) print(10)   在全局调用:全局命名空间->内置命名空间 x = 1 def f(x): print(x) f(10) print(x) print(max) 作用域 作用域就是作用范围,按照生效范围可以分为全局作用域和局部作用域。 全局作用域:包含 内置名称空间、全局名称空间 ,在整个文件的任意位置都能被引用、全局有效 局部作用域:局部名称空间,只能在局部范围 内 生效 globals和locals方法 print(globals()) print(locals()) def func(): a =

javascript学习第二课

余生颓废 提交于 2020-01-27 04:05:27
主要内容: 1.不可变的原始值和可变的对象引用 javascript中的原始值(undefined、null、布尔值、数字和字符串)与对象(包括数组和函数)有着根本的区别。原始值是不可更改的;任何方法都无法更改一个原始值。 通过上图可以看出,原始值的比较是值的比较:只有它们的值相等时它们才相等;对象和原始值不同,首先,它们是可变的--它们的值是可修改的;两个单独的对象永不相等。两个单独的数组也不相等。如果我们想比较两个单独对象或者数组,则必须比较它们的属性或元素。 2.类型转换: 如图: 注意:一个值转换为另一个值并不意味着两个值相等。比如,如果在期望使用布尔值的地方使用了undefined,它将会转换为false,但这并不表时undefined==false. 重复的声明和遗漏的声明: 使用var 语句重复声明变量是合法且无害的。如果重复声明带有初始化器,那么这就和一条简单的赋值语句没有什么两样。 变量作用域 变量的作用域(scope)是程序源代码中定义这个变量的区域。全局变量拥有全局作用域,在javascript代码中的任何地方都是有定义的。然而在函数内声明的变量只在函数体内有定义。它们是局部变量,作用域是局部性的。函数参数也是局部变量,它们只在函数体内有定义。 在函数体内,局部变量优先级高级同名的全局变量。 函数作用域和声明提前 在类似C语言的编程语言中

[译]JavaScript:函数的作用域链

跟風遠走 提交于 2020-01-27 02:14:46
/*--> */ /*--> */ 原文: http://blogs.msdn.com/b/jscript/archive/2007/07/26/scope-chain-of-jscript-functions.aspx 在JavaScript中,函数的作用域链是一个很难理解的东西.这是因为,JavaScript中函数的作用域链和其他语言比如 C, C++ 中函数的作用域链相差甚远.本文详细解释了JavaScript中与函数的作用域链相关的知识,理解这些知识可以帮助你在处理闭包的时候避免一些可能出现的问题. 在JavaScript中,函数可以让你在一次调用中执行一系列的操作.有多种方式来定义一个函数,如下: 函数声明: function maximum(x, y) { if (x > y) return x; else return y; } maximum(5, 6) //返回6; 这种语法通常用来定义全局作用域下的函数(全局函数). 函数表达式 : var obj = new Object(); obj.maximum = function (x, y) { if (x > y) return x; else return y; }; obj.maximum(5, 6) //返回6; 这种语法通常用来定义一个作为对象方法的函数. Function构造函数 : var

javascript

|▌冷眼眸甩不掉的悲伤 提交于 2020-01-27 01:44:10
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理。 一、如何编写 1、JavaScript代码存在形式 一般我们都是新建JavaScript文件,以.js结尾,然后在html文件中调用。下面介绍两种js代码两种存在形式 <!-- 方式一 --> <script type"text/javascript" src="JS文件"></script> <!-- 方式二 --> <script type"text/javascript"> Js代码内容 </script> #一般默认添加type"text/javascript",所以一般我们都省略这句 2、JavaScript代码存放位置 HTML的head中 HTML的body代码块底部(推荐) 由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放置在body代码块底部,那么即使js代码耗时严重,也不会影响用户看到页面效果,只是js实现特效慢而已。 为了使显示直观,下面都把js代码写在html文件中,即以方式二呈现,有些示例会以浏览器console终端显示。   二、变量 局部变量: var 变量名 全局变量:变量名

Javascript学习之函数(function)

自作多情 提交于 2020-01-26 12:13:03
在JS中,Function(函数)类型实际上是对象;每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也是一个指向函数对象的指针。 一 函数的声明方式 //1.函数声明方式 function add(num1,num2){ return num1+num2; } //2.函数表达式定义函数 var add= function(num1,num2){   // 通过变量box即可引用函数; return num1+num2; };             // 注意函数末尾有一个分号,就像声明其他变量时一样;  var another = add;         // 使用不带圆括号的函数名是访问函数指针;而非调用函数;  console.log(another(10,10));   //3.使用Function构造函数 var add = new Function('num1','num2','return num1+num2'); // 第三种方式不推荐,这种语法会导致解析两次代码(第一次解析常规JS代码,第二次解析传入构造函数中的字符串),从而影响性能; // 可以通过这种语法来理解"函数是对象,函数名是指针"的概念; 通常来说,在全局作用域内声明一个对象,只不过是对一个属性赋值而已,比如上例中的add函数

python学习之路前端-JavaScript

大憨熊 提交于 2020-01-26 12:08:50
JavaScript简介 JavaScript一种 直译 式 脚本语言 ,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的 解释器 被称为JavaScript引擎,为 浏览器 的一部分,广泛用于 客户端 的脚本语言,最早是在 HTML ( 标准通用标记语言 下的一个应用)网页上使用,用来给 HTML 网页增加动态功能。 1.基本特点 JavaScript是一种属于网络的脚本语言,已经被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能的。 1.是一种解释性脚本语言(代码不进行预编译)。 2.主要用来向HTML(标准通用标记语言下的一个应用)页面添加交互行为。 3.可以直接嵌入HTML页面,但写成单独的js文件有利于结构和行为的分离。 4.跨平台特性,在绝大多数浏览器的支持下,可以在多种平台下运行(如Windows、Linux、Mac、Android、iOS等)。 Javascript脚本语言同其他语言一样,有它自身的基本数据类型,表达式和算术运算符及程序的基本程序框架。Javascript提供了四种基本的数据类型和两种特殊数据类型用来处理数据和文字。而变量提供存放信息的地方,表达式则可以完成较复杂的信息处理。 2.日常用途 嵌入动态文本于HTML页面

作用域和作用域链、闭包面试题

心已入冬 提交于 2020-01-26 09:07:32
ECStack:全局上下文环境栈 EC(G):全局执行上下文 VO(G):全局对象 创建函数的时候: 创建一个堆(存储代码字符串) 初始化当前函数的作用域 [[scope]] = 所在上下文中的变量对象 VO/AO 函数执行的时候: 创建一个新的执行上下文EC(压缩到ECStack里执行) 初始化this指向 初始化作用域链[[scopeChain]]:xxx 创建AO变量对象用来存储变量 =》arguments =>形参 =》代码执行 答案: 2、 来源: CSDN 作者: 郭小刀 链接: https://blog.csdn.net/sinat_36414515/article/details/104003758

C++基础:变量和基本类型

前提是你 提交于 2020-01-26 05:09:51
基本内置类型 一、基本内置类型 C++定义了一套包括算术类型(arithmetic type) 和空类型(void) 在内的基本数据类型。其中算术类型包含了字符、整型数、布尔值和浮点数。空类型不对应具体的值,仅用于一些特殊的场合,例如最常见的是,当函数不返回任何值时使用空类型作为返回类型。 二、算术类型 算术类型分为两类:整型(integral type,包括字符和布尔类型在内)和浮点型。 带符号类型和无符号类型 除去布尔型和扩展的字符型之外,其他整型可以划分为带符号的(signed) 和无符号的(unsigned) 两种。带符号类型可以表示正数、负数或0,无符号类型则仅能表示大于等于0的值。 类型int、short、 long 和long long 都是带符号的,通过在这些类型名前添加unsigned就可以得到无符号类型,例如unsigned long。 类型unsigned int 可以缩写为unsigned。 与其他整型不同,字符型被分为了三种: char、signed char和unsigned char。特别需要注意的是:类型char和类型signed char并不一样。类型char实际上会表现为上述两种形式中的一种,具体是哪种由编译器决定。 建议:如何选择类型 和C语言一样,C++的设计准则之一也是尽可能地接近硬件。C++的算术类型必须满足各种硬件特质