作用域

每个JavaScript工程师都应懂的33个概念

坚强是说给别人听的谎言 提交于 2019-12-01 02:13:43
目录 调用堆栈 原始类型 值类型和引用类型 隐式, 显式, 名义和鸭子类型 == 与 ===, typeof 与 instanceof this, call, apply 和 bind 函数作用域, 块级作用域和词法作用域 闭包 map, reduce, filter 等高阶函数 表达式和语句 变量提升 Promise 立即执行函数, 模块化, 命名空间 递归 算法 数据结构 消息队列和事件循环 setTimeout, setInterval 和 requestAnimationFrame 继承, 多态和代码复用 按位操作符, 类数组对象和类型化数组 DOM 树和渲染过程 new 与构造函数, instanceof 与实例 原型继承与原型链 Object.create 和 Object.assign 工厂函数和类 设计模式 Memoization 纯函数, 函数副作用和状态变化 耗性能操作和时间复杂度 JavaScript 引擎 二进制, 十进制, 十六进制, 科学记数法 偏函数, 柯里化, Compose 和 Pipe 代码整洁之道 Doc 每个JavaScript工程师都应懂的33个概念 33-js-concepts 来源: https://www.cnblogs.com/mybilibili/p/11647459.html

python全栈闯关--10-1、命名空间和作用域

十年热恋 提交于 2019-12-01 01:52:15
1、引子 a = 1 def func(): print(a) func() 函数func中,可以使用函数外的变量a,这就涉及到命名空间和作用域。 2、命名空间 命名空间分三种 1、内置命名空间 —— python解释器   内置命名空间在python一启动的时候就可以使用   内置的名字,启动解释器的时候,就加载进内存里 2、全局命名空间 —— 自己写得代码但不是函数中的代码   从下到下执行代码的时候加载进内存   存放了设置的变量名和函数名 3、内置命名空间 —— 函数   函数内部定义的名字   当函数调用时,才产生这个命名空间,随之函数的执行结束,这个命名空间也就消失 在局部:可以使用全局和内置命名空间的名字 在全局:可以使用内置命名空间中的名字,但是不能用局部命名空间的 在内置:不能使用全局和局部命名空间中的名字 def max(l): print("in max func") print(max([1,2,3,4])) 执行结果 正常情况下,我们可以直接使用内置的名字 但是,如果在全局定义了和内置名字一样的名字是,会使用全局的名字 多个函数,拥有多个独立的局部命名空间,不共享 3、函数的调用和地址 def input(): print("in input now!") def func(): print(input) # 打印的结果为函数的地址,并不会执行函数

VUE的基本使用

↘锁芯ラ 提交于 2019-12-01 01:49:24
一 ESMAScript6的基础语法 1 声明变量 let和conset 我们在使用var声明变量时 在js中属于全局作用域,而使用let则属于局部作用域 let声明的变量有两种现象: 第一种 属于局部作用域 第二种 没有覆盖现象 const 声明的是常量并且也是局部作用域,也就是无法修改变量中的值 2 模板字符串 table键上面的反引号 如果说要拼接一串字符串, 那么不需要再使用+去拼接, 使用反引号来拼接,拼接的变量使用${变量名} //es5的语法 /* let name = 'harry'; let age = 24; var desc = name+"是XXX,今年"+age+'了'; console.log(desc); */ // es6模板字符串 let name = 'harry'; let age = 24; var desc2 = `${name}是XXXX, 今年${age}了,sdf`; console.log(desc2) 来源: https://www.cnblogs.com/harryblog/p/11646705.html

闭包的应用场景

安稳与你 提交于 2019-11-30 22:43:43
123456789 var scope = "global scope";function () { var scope = "local scope"; function f() { return scope; } return f();}checkScope(); 代码执行过程分析 checkScope被invoke(调用)时,return f(),运行内部嵌套函数f,f沿着作用域链从内向外寻找变量scope,找到“local scope”,停止寻找,因此,函数返回 “local scope”; 代码稍作修改: 123456789 var scope = "global scope";function () { var scope = "local scope"; function f() { return scope; } return f;}checkScope()(); //=> "这次返回什么?" 代码执行过程分析 checkScope被invoke时,将内部嵌套的函数f返回,因此checkScope()()这句执行时,其实运行的是f(), f函数返回scope变量,在这种情况下,f会从哪个作用域里去寻找变量scope呢? 词法作用域的基础规则: 函数被执行时(executed)使用的作用域链(scope chain)是被定义时的scope chain

Ecplice快捷键

爷,独闯天下 提交于 2019-11-30 21:07:10
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快捷键将方法的计算结果赋值于一个本地变量之上。 这样我节省了输入类名,变量名以及导入声明的时间。Ctrl+F的效果类似,不过效果是把方法的计算结果赋值于类中的域。 5. alt+shift+r:重命名 重命名属性及方法在几年前还是个很麻烦的事,需要大量使用搜索及替换,以至于代码变得零零散散的。今天的Java IDE提供源码处理功能

函数进阶

橙三吉。 提交于 2019-11-30 19:30:15
阅读目录  楔子  命名空间和作用域  函数嵌套及作用域链  函数名的本质  闭包  本章小结 返回顶部 楔子 假如有一个函数,实现返回两个数中的较大值: def my_max(x,y): m = x if x>y else y return mbigger = my_max(10,20)print(bigger) 之前是不是我告诉你们要把结果return回来你们就照做了?可是你们有没有想过,我们为什么要把结果返回?如果我们不返回m,直接在程序中打印,行不行? 来看结果: >>> def my_max(x,y): ... m = x if x>y else y ... >>> my_max(10,20) >>> print(m) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'm' is not defined 报错了!错误是“name 'm' is not defined”。变量m没有被定义。。。为啥?我明明定义了呀! 在这里我们首先回忆一下python代码运行的时候遇到函数是怎么做的。 从python解释器开始执行之后,就在内存中开辟了一个空间 每当遇到一个变量的时候,就把变量名和值之间的对应关系记录下来。 但是

JS变量

孤街醉人 提交于 2019-11-30 19:20:57
变量,就是用于引用内存中存储的一个值。 1声明变量 在JavaScript中声明变量的方式有3种: var, let ,const const和let的区别在于, const 所声明的变量如果是简单数据类型,那么是不能够再改变的。 let所声明的变量无论是简单数据类型还是复杂数据类型,在后面是可以改变的。var声明变量:重复声明,遗漏声明,变量提升。 1)重复声明:使用var关键字来声明的变量,允许重复声明的,后面覆盖前面;var test = 3;var test = 5; console. log(test);//5 重复声明带有不赋值操作,JS引擎会自动忽略后面的变量声明 var test = 3;var test; console. log(test);//3 2)遗漏声明:JS允许遗漏声明,即直接对变量赋值而无需事先声明,赋值操作会自动声明该变量a= 5; console. log(a);//5 示例如下: const声明变量 const name = &apos;Bill&apos;;name = &apos;Lucy&apos;; //TypeError: Assignment to constant variable. let声明变量 Let name = &apos;Bill&apos;;name = &apos;Lucy&apos;; console. log

怎样理解作用域链

倖福魔咒の 提交于 2019-11-30 18:37:59
前言: 理解了作用域链, 就理解了为什么函数作用域可以引用全局作用域下声明的变量, 反正则不行. 第一步: 理解下面这段代码 function fn1() { function fn2() { console.log(name); } fn2(); } fn1(); // undefined 第二步: 理解下面这段代码 function fn1() { function fn2() { var name = "Lilei"; console.log(name); } fn2(); } fn1(); // "Liei" 第三步: 理解下面这段代码 function fn1() { var name = "Lilei"; function fn2() { console.log(name); } fn2(); } fn1(); // "Liei" 第四步: 理解下面这段代码 var name = "Lilei"; function fn1() { function fn2() { console.log(name); } fn2(); } fn1(); // "Liei" 第五步: 理解下面这段代码 var name = "Lilei"; function fn1() { var name = "Hanmeimei"; function fn2() { var name =

怎样理解全局作用域和函数作用域

安稳与你 提交于 2019-11-30 18:30:13
前言: 全局作用域下声明的变量再其他作用域下也可以使用, 但函数作用域下声明的变量, 无法在全局作用域下使用. var name1 = "Lilei"; function fn() { var name2 = "Hanmeimei"; console.log(name1); console.log(name2); } fn(); // "Lilei" // "Hanmeimei" console.log(name2); // Error: undefined; 注意: ES5 中没有块级作用域, 因此在全局作用域下的if 或 for 或 {} 中声明的变量都是全局变量, 如果if 或 for 或 {} 在函数作用域中, 则在其内部声明的变量可以在函数作用域中使用; 来源: https://www.cnblogs.com/aisowe/p/11634879.html

使用SpringWebFlow

会有一股神秘感。 提交于 2019-11-30 18:20:38
使用SpringWebFlow 本章主要内容: · 创建会话式的Web应用程序 · 定义流程状态和行为 Spring Web Flow 是Spring MVC 的扩展,它支持开发基于流程的应用程序。它将流程的定义与实现流程行为的类和视图分离开来。 1 在Spring中配置Web Flow Spring Web Flow是构建于Spring MVC基础之上的。这意味着所有的流程请求都需要首先经过Spring MVC的DispatcherServlet。我们需要在Spring应用上下文中配置一些bean来处理流程请求并执行流程。现在,还不支持在Java中配置Spring Web Flow,所以我们需要在XML中对其进行配置。有一些bean会使用Spring Web Flow的Spring配置文件命名空间来进行声明。因此需要在上下文定义XML文件中添加这个命名空间声明: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:folw="http://www.springframework.org/schema/webflow