作用域

JS的箭头函数this作用域

社会主义新天地 提交于 2019-11-29 00:59:24
name="小刚"; let student={ name:"小明", printLog:function(){ // 这里绑定了顶层作用域,可以使用变量与方法 console.log(this) }, printArrowLog:()=>{ // 这里不知道绑定的是哪个作用域,有知道的大咖请回答下 console.log(this) } } student.printLog(); /* { name: '小明', printLog: [Function: printLog], printArrowLog: [Function: printArrowLog] } */ student.printArrowLog(); /* {} 这里返回了空对象,说明this不是指向window全局对象,也不是指向student对象。奇葩 */ name="小刚"; let student={ name:"小明", printLog:function(){ // 这里绑定了顶层作用域,可以使用变量与方法 return ()=>{ console.log("printLog Arrow:"+this) } }, printLog1:function(){ // 这里绑定了全局作用域,可以使用window对象的属性 return function(){ console.log("printLog1:"

puppet (三)变量及作用域

╄→гoц情女王★ 提交于 2019-11-28 23:48:27
一.puppet variable 1.变量命名 puppet的变量名称须以$开头,复制操作符为=号 格式为: $content = "some content\n" 或这样理解 $variable = 'value' 任何正常数据类型(非正则表达式的)的值都可以赋予puppet中的变量,任何能解析为一个正常值(包括表达式,函数和其他变量)的语句都可以作为value;变量将包含这个语句解析的值而不是语句的引用; puppet的变量只能使用他们的短名称来分配,这意味着,在给定范围内不能将外部范围内的value赋值给variable; 例如: [root@bogon ~]# rpm -q vlock package vlock is not installed [root@bogon media]# vim test.pp $package_vlock = 'vlock' package{$package_vlock: ensure => installed, } [root@bogon media]# puppet apply test.pp Notice: Compiled catalog for bogon in environment production in 1.62 seconds Notice: /Stage[main]/Main/Package[vlock]

封闭了内心却包容了天下,闭包你并不孤独

混江龙づ霸主 提交于 2019-11-28 23:25:25
起点 本文之所以会写这种老生常谈的文章,是为了接下来的设计模式做铺垫。既然已经提笔了,就打算不改了,继续写下去,相信也一定有很多人对闭包这样的概念有些模糊,那就瞧一瞧、看一看 毕竟闭包和高阶函数这两种概念,在开发中是非常有分量的。好处多多,妙处多多,那么我们就不再兜圈子了,直接开始今天的主题,闭包&高阶函数 闭包 闭包是前端er离不开的一个话题,而且也是一个难懂又必须明白的概念。说起闭包,它与变量的作用域和变量的生命周期密切相关。 这两个知识点我们也无法绕开,那么就一起了解下吧 变量作用域 首先变量作用域分为两类:全局作用域和局部作用域,这个没话说大家都懂。我们常说的变量作用域其实也主要是在函数中声明的作用域 在函数中声明变量时没有var关键字,就代表是全局变量 在函数中声明变量带有var关键字的即是局部变量,局部变量只能在函数内才能访问到 function fn() { var a = 110; // a为局部变量 console.log(a); // 110 } fn(); console.log(a); // a is not defined 外部访问不到内部的变量 上面代码展示了在函数中声明的局部变量a在函数外部确实无法拿到。小样儿的还挺嚣张,对于迎难而上的coder来说,还不信拿不下a了 客官,莫急,且听风吟。大家是否还记得在js中,函数可是“一等公民”啊,大大滴厉害

变量的作用域

安稳与你 提交于 2019-11-28 21:50:54
1、局部变量和全局变量 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Java Script</title> <script type="text/javascript"> var welcome = function() { var String1="我是局部变量"; console.log(String2); } </script> </head> <body bgcolor="aquamarine"> <script> var String2="我是全局变量"; welcome(); </script> </body> </html> 可以通过局部访问全局变量,但是不能在函数的外面访问局部变量。是局部变量还是全局变量关键是看var的位置。 例如: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Java Script</title> <script type="text/javascript"> function welcome(){ num1=2; console.log(num1); } </script> </head> <body bgcolor="aquamarine"> <script> var num1 = 1;

javascript深入理解js闭包

杀马特。学长 韩版系。学妹 提交于 2019-11-28 21:47:59
一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。 变量的作用域无非就是两种:全局变量和局部变量。 Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。 Js代码   var n=999;   function f1(){     alert(n);   }   f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量。 Js代码   function f1(){     var n=999;   }   alert(n); // error 这里有一个地方需要注意,函数内部声明变量的时候,一定要使用var命令。如果不用的话,你实际上声明了一个全局变量! Js代码   function f1(){     n=999;   }   f1();   alert(n); // 999 -------------------------------------------------------------------------------------------------------- 二、如何从外部读取局部变量? 出于种种原因,我们有时候需要得到函数内的局部变量。但是,前面已经说过了,正常情况下,这是办不到的,只有通过变通方法才能实现。 那就是在函数的内部,再定义一个函数。 Js代码   function f1(

JavaScript的作用域和上下文

早过忘川 提交于 2019-11-28 19:30:04
作用域在函数定义时就已经确定了,执行上下文环境在函数调用时才确定。在全局作用域和函数作用域中会创建执行上下文环境(有闭包存在时,一个作用域存在两个上下文环境也是有的)。函数每调用一次都会产生一个新的执行上下文环境。但是处于活动状态的执行上下文环境只有一个,这是一个压栈出栈的过程。 执行上下文:函数每调用一次,都会产生一个新的执行上下文环境,因为不同的调用可能就有不同的参数。 let a = 10, fn, // 1、进入全局上下文环境 bar = function(x) { let b = 5 fn(x + b) // 3、进入fn函数上下文环境 } fn = function(y) { let c = 5 console.log(y + c) } bar(10) // 2、进入bar函数上下文环境 首先(数字1注释),执行代码之前,首先创建全局上下文环境(活动状态)如下: // 全局上下文环境 a: undefined fn: undefined bar: undefined this: window 之后开始执行代码,代码到10行之前,上下文环境中的变量都在执行过程中被赋值如下: // 全局上下文环境 a: 10 fn: function bar: function this: window 然后执行到bar(10) ,跳转到bar函数内部,执行函数体语句之前

18-包及作用域

余生颓废 提交于 2019-11-28 17:47:39
包https://www.jianshu.com/p/c798a019f2ec Java定义了一种名字空间,称之为包:package,用于解决名字冲突。一个类总是属于某个包,类名只是一个简写,真正的完整类名是包名.类名。 例如: 小明的Person类存放在包ming下面,因此,完整类名是ming.Person; 小红的Person类存放在包hong下面,因此,完整类名是hong.Person; 小军的Arrays类存放在包mr.jun下面,因此,完整类名是mr.jun.Arrays; JDK的Arrays类存放在包java.util下面,因此,完整类名是java.util.Arrays。 在定义class的时候,我们需要在第一行声明这个class属于哪个包。 //小明的Person.java文件: package ming; // 申明包名ming public class Person { } //小军的Arrays.java文件: package mr.jun; // 申明包名mr.jun public class Arrays { } 注意:如果在定义包的时候出现了“.”,那么就表示子目录,多个.java文件可以属于一个包。 假设以package_sample作为根目录,src作为源码目录,那么所有文件结构就是: package_sample └─ src ├─ hong │

新版vue作用域插槽的使用

青春壹個敷衍的年華 提交于 2019-11-28 16:36:24
2.6开始,作用域插槽的使用有了不同的地方; 作用域插槽的个人理解就是让子组件的数据可以在父组件中使用; 也是一个数据传递的方式了; 不多说,上代码 子组件定义一个插槽,并且定义一个需要传递到父组件的数据 html: <template> <div class="card-wrap"> <div class="foot"> <slot name="todo" v-bind:user="user"> </slot> </div> </div> </template>   js: export default { data(){ return{ user:{ lastname:'qiao', age:12, firstName:'zhang' } } } }    父组件中使用: 首先引用组件并且注册; 然后使用如下 <Card> <template v-slot:todo="slotProps"> {{slotProps.user.age}} {{slotProps.user.lastname}} </template> </Card> //slotProps 可以随意命名 //slotProps 接取的是子组件标签slot上属性数据的集合所有v-bind:user="user"    来源: https://www.cnblogs.com/qqfontofweb/p

python-命名空间和作用域

我是研究僧i 提交于 2019-11-28 16:20:11
前言 前段时间写脚本的时候,在调用函数的时候,一直在想在python中函数的参数是传值还是传引用?先看一下下面两个例子 a = 1def setvalue(arg): arg = 100 print(arg) setvalue(a) print(a) 这个例子中,会发现最后打印出的 a 仍然是 1 ,看起来像是传值调用。再看另一个例子: a = [1]def setvalue(arg): arg[0] = 100 print(arg[0]) setvalue(a) print(a[0]) 这个例子的结果 a 中的数值已经修改成了 100,这样看又是传引用。熟悉C语言的可能在这里会说,这里传的是地址,所以修改有效。当然可以这么理解,但是在 python 中,对待变量与赋值需要换一个角度去理解。这也是我学python遇到的第一个难点,涉及到了python的namespace和scope,想要学好python是必须要弄懂的。 一切皆对象 python 最大的特点也是最核心的思想,以前就提到过就是: 一切皆对象 。在说 namespace 和 scope 之前,先说一下python中给变量赋值的原理。 a = 1 #1a = 2 #2b = a #3del a #4 在 python 中,所有的int,string,list,dict,函数和类等等等等,我们都把它看成是一个对象。

详解Spring中bean的scope

房东的猫 提交于 2019-11-28 15:46:52
1、singleton 作用域 当一个bean的 作用域 设置为 singleton, 那么Spring IOC容器中只会存在一个共享的bean实例,并且所有对bean的请求,只要id与该bean定义相匹配,则只会返回bean的同一实例。换言之,当把 一个bean定义设置为singleton作用域时,Spring IOC容器只会创建该bean定义的唯一实例。这个单一实例会被存储到单例缓存(singleton cache)中,并且所有针对该bean的后续请求和引用都 将返回被缓存的对象实例,这里要注意的是singleton作用域和GOF设计模式中的单例是完全不同的,单例设计模式表示一个ClassLoader中 只有一个class存在,而这里的singleton则表示一个容器对应一个bean,也就是说当一个bean被标识为singleton时 候,spring的IOC容器中只会存在一个该bean。 < bean id = "role" class = "spring.chapter2.maryGame.Role" scope= "singleton"/ > 2、prototype prototype作用域部署的bean,每一次请求(将其注入到另一个bean中,或者以程序的方式调用容器的getBean()方法)都会产生一个新的bean实例,相当与一个new的操作