作用域

Spring Bean的作用域

感情迁移 提交于 2019-12-19 15:05:16
Spring中,bean作用域用于确定哪种类型的bean实例应该从Spring容器中返回给调用者 那 spring bean是什么呢? Bean是Spring框架中最核心的两个概念之一(另一个是面向切面编程AOP)。 在 Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean。bean是一个由Spring IoC容器实例化、组装和管理的对象。 那么:也就是说白了,bean 就是ioc容器实例化的一个对象。 1 .bean是对象,一个或者多个不限定 2 . bean由Spring中一个叫IoC的东西管理 3. 我们的应用程序由一个个bean构成 Spring Bean的作用域或者说范围主要有五种。 作用域 描述 session 同一个HTTP Session共享一个Bean,不同Session使用不同的Bean。该作用域仅适用于web的Spring WebApplicationContext环境。 request 每次HTTP请求都会创建一个新的Bean,该作用域仅适用于web的Spring WebApplicationContext环境。 application 限定一个Bean的作用域为ServletContext的生命周期。该作用域仅适用于web的Spring WebApplicationContext环境 singleton 在spring

javascript变量声明提升(hoisting)

青春壹個敷衍的年華 提交于 2019-12-19 09:28:54
javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到 当前作用域 的最前面。 先看一段代码 1 2 3 4 5 var v = "hello" ; ( function (){ console.log(v); var v = "world" ; })(); 这段代码运行的结果是什么呢? 答案是:undefined 这段代码说明了两个问题, 第一,function作用域里的变量v遮盖了上层作用域变量v。代码做少些变动 1 2 3 4 5 var v = "hello" ; if ( true ){ console.log(v); var v = "world" ; } 输出结果为"hello",说明 javascript是没有块级作用域的 。 函数是JavaScript中唯一拥有自身作用域的结构。 第二,在function作用域内,变量v的声明被提升了。所以最初的代码相当于: 1 2 3 4 5 6 var v = "hello" ; ( function (){ var v; //declaration hoisting console.log(v); v = "world" ; })(); 声明、定义与初始化 声明宣称一个名字的存在,定义则为这个名字分配存储空间,而初始化则是为名字分配的存储空间赋初值。 用C+

Js作用域与作用域链详解

流过昼夜 提交于 2019-12-19 09:27:52
一直对Js的作用域有点迷糊,今天偶然读到 JavaScript 权威指南,立马被吸引住了,写的真不错。我看的是第六版本,相当的厚,大概1000多页,Js博大精深,要熟悉精通需要大毅力大功夫。 一:函数作用域 先看一小段代码: [javascript] view plain copy var scope= "global" ; function t(){ console.log(scope); var scope= "local" console.log(scope); } t(); (PS: console.log()是firebug提供的调试工具,很好用,有兴趣的童鞋可以用下,比浏览器+alert好用多了) 第一句输出的是: "undefined",而不是 "global" 第二讲输出的是:"local" 你可能会认为第一句会输出:"global",因为代码还没执行var scope="local",所以肯定会输出“global"。 我说这想法完全没错,只不过用错了对象。我们首先要区分Javascript的函数作用域与我们熟知的C/C++等的块级作用域。 在C/C++中,花括号内中的每一段代码都具有各自的作用域,而且变量在声明它们的代码段之外是不可见的。而Javascript压根没有块级作用域,而是函数作用域. 所谓函数作用域就是说:-

javascript变量声明 及作用域

扶醉桌前 提交于 2019-12-19 09:27:00
javascript变量声明提升 javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到 当前作用域 的最前面。 先看一段代码 1 2 3 4 5 var v = "hello" ; ( function (){ console.log(v); var v = "world" ; })(); 这段代码运行的结果是什么呢? 答案是:undefined 这段代码说明了两个问题, 第一,function作用域里的变量v遮盖了上层作用域变量v。代码做少些变动 1 2 3 4 5 var v = "hello" ; if ( true ){ console.log(v); var v = "world" ; } 输出结果为”hello”,说明 javascript是没有块级作用域的 。 函数是JavaScript中唯一拥有自身作用域的结构。 第二,在function作用域内,变量v的声明被提升了。所以最初的代码相当于: 1 2 3 4 5 6 var v = "hello" ; ( function (){ var v; //declaration hoisting console.log(v); v = "world" ; })(); 声明、定义与初始化 声明宣称一个名字的存在,定义则为这个名字分配存储空间

javascript变量声明提升

丶灬走出姿态 提交于 2019-12-19 09:26:37
https://www.cnblogs.com/silentjesse/p/4024536.html javascript的变量声明具有hoisting机制,JavaScript引擎在执行的时候,会把所有变量的声明都提升到 当前作用域 的最前面。 先看一段代码 1 2 3 4 5 var v = "hello" ; ( function (){ console.log(v); var v = "world" ; })(); 这段代码运行的结果是什么呢? 答案是:undefined 这段代码说明了两个问题, 第一,function作用域里的变量v遮盖了上层作用域变量v。代码做少些变动 1 2 3 4 5 var v = "hello" ; if ( true ){ console.log(v); var v = "world" ; } 输出结果为”hello”,说明 javascript是没有块级作用域的 。 函数是JavaScript中唯一拥有自身作用域的结构。 第二,在function作用域内,变量v的声明被提升了。所以最初的代码相当于: 1 2 3 4 5 6 var v = "hello" ; ( function (){ var v; //declaration hoisting console.log(v); v = "world" ; })(); 声明、定义与初始化

深入理解 JavaScript 变量的作用域和作用域链

人走茶凉 提交于 2019-12-19 09:26:06
一个变量的作用域(scope)是程序源代码中定义这个变量的区域。简单的说,作用域就是变量与函数的可访问范围。全局变量拥有全局作用域,在JavaScript代码中的任何地方都有定义。局部变量是在函数体内声明而且只作用在函数体内部以及该函数体的子函数的变量。下面我们对全局作用域和局部作用域来做一个深入的理解。   1. 全局作用域(Global Scope)   全部变量拥有全局作用域,在代码的任何地方都有定义,一般来说以下几种情形拥有全局作用域:   (1)最外层函数和在最外层函数外面定义的变量拥有全局作用域,例如: 1 var scope="global"; //声明一个全局变量 2 function checksope(){ 3 function showglobal(){ 4 alert(scope); //弹窗全局变量 5 } 6 showglobal(); 7 } 8 checksope() // global 内部函数可以访问全局变量 (2)所有末定义直接赋值的变量自动声明为拥有全局作用域,例如: 1 function checksope(){ 2 var scope="local"; 3 scopeglobal="global"; 4 alert(scope); 5 } 6 checksope(); // local 7 alert(scopeglobal); //

JavaScript之函数作用域

[亡魂溺海] 提交于 2019-12-19 09:25:47
   有过类似C语言编程经验的同学应该都知道“块级作用域(block scope)”:花括号内的每一段代码都具有各自的作用域,而且在声明它们的代码段之外是不可见的。而在JavaScript中是没有块级作用域的,JavaScript取而代之地使用了“函数作用域(function scope)”:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。   光用文字解释平白无味,先来段让你为之一振的代码: function myTest(num){ var i = 0; if(num == 222){ var j = 0; for(var k=0; k<2; k++){ console.log(k); } console.log(k); } console.log(i); console.log(j); console.log(k); console.log(m); } myTest(111);   请认真阅读代码,仔细思考,认真回答问题。下面给出浏览器中运行的结果,检验下自己的答案吧!   如果你完全回答正确,并且已经明白所有原因,那么就没必要看下去了;如果你还未明白原因并且有一颗好奇、意欲一探究竟的心,那么就下来就要认真看完本博客了。   既然不懂,那就再继续认真看解释呗:JavaScript的函数作用域是指在函数内声明的所有变量在函数体内始终是可见的

前端面试必会 | 一文读懂现代 JavaScript 中的变量提升 - let、const 和 va

删除回忆录丶 提交于 2019-12-19 08:05:35
本文翻译自 https://blog.bitsrc.io/hoisting-in-modern-javascript-let-const-and-var-b290405adfda ,作者 Sukhjinder Arora,内容有部分删改,标题有改动。 许多 JavaScript 程序员将提升解释为 JavaScript 将声明(变量和函数)移至其当前作用域(函数或全局)顶部的行为。好像它们实际上已经移到了代码的顶部,事实并非如此。例如: console.log(a); var a = 'Hello World!'; 他们会说,上面的代码将在提升后转换为以下代码: var a; console.log(a); a = 'Hello World!'; 尽管看起来是这样,因为代码也工作正常了,但是 JavaScript 引擎事实上并不是这么做的,你的代码还是在这里。 那么,提升是什么呢? 在编译阶段,即在代码执行前的几微秒内,将对其进行扫描以查找函数和变量声明。所有这些函数和变量声明都添加到内存中称为 词法环境 的 JavaScript 数据结构内部。这样,即使在源代码中实际声明它们之前也可以使用它们。 词法环境是什么? 词法环境是用来保存标识符和变量映射关系的地方。标识符是变量或者函数的名字,变量是对实际对象(包括函数对象和数组对象)或者原始值的引用。 简而言之,

前端开发之三、【第三篇: JavaScript基础】

六眼飞鱼酱① 提交于 2019-12-19 06:57:00
一、JavaScript 的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言) Netscape(网景)接收Nombas的理念,( Brendan Eich) 在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.后改名叫Javascript 微软随后模仿在其IE3.0的产品中搭载了一个JavaScript的克隆版叫Jscript. 为了统一三家,ECMA( 欧洲计算机制造协会)定义了ECMA-262规范.国际标准化组织及国际电工委员会(ISO/IEC)也采纳 ECMAScript 作为标准(ISO/IEC-16262)。从此,Web 浏览器就开始努力(虽然有着不同的程度的成功和失败)将 ECMAScript 作为 JavaScript 实现的基础。EcmaScript是规范. J avaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理。 二、如何编写 1、JavaScript代码存在形式 <!-- 方式一 --> <script type"text/javascript

闭包(closure)

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