作用域

[JavaScript]高效 JavaScript

耗尽温柔 提交于 2019-11-27 10:54:43
作者 Mark 'Tarquin' Wilton-Jones · 2006年11月2日 本文翻译自 Efficient JavaScript 原译文地址 http://kb.operachina.com/node/207 传统上,网页中不会有大量的脚本,至少脚本很少会影响网页的性能。但随着网页越来越像 Web 应用程序,脚本的效率对网页性能影响越来越大。而且使用 Web 技术开发的应用程序现在越来越多,因此提高脚本的性能变得很重要。 对于桌面应用程序,通常使用编译器将源代码转换为二进制程序。编译器可以花费大量时间优化最终二进制程序的效率。Web 应用程序则不同。因为Web应用程序需要运行在不同的浏览器、平台和架构中,不可能事先完全编译。浏览器在获得脚本后要执行解释和编译工作。用户要求不仅要求网页能快速的载入,而且要求最终 Web 应用程序执行的效果要和桌面应用程序的一样流畅。Web 应用程序应能运行在多种设备上,从普通的桌面电脑到手机。 浏览器并不很擅长此项工作。虽然 Opera 有着当前最快的脚本引擎,但浏览器有不可避免的局限性,这时就需要 Web 开发者的帮助。Web开发者提高 Web 应用程序的性能的方法很多而且也很简单,如只需要将一种循环变成另一种、将组合样式分解成三个或者只添加实际需要的脚本。 本文从 ECMAScript/JavaScript, DOM,

Spring的作用域以及RequestContextListener作用

限于喜欢 提交于 2019-11-27 10:30:07
一、配置方式 在Spring2.0中除了以前的Singleton和Prototype外又加入了三个新的web作用域,分别为request、session和global session,如果你想让你的容器里的某个bean拥有其中某种新的web作用域, 除了在bean级上配置相应的scope属性,还必须在容器级做一个额外的初始化配置。 <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> 如果你用的是早期版本的web容器(Servlet 2.4以前),那么你要使用一个javax.servlet.Filter的实现。 <web-app> ... <filter> <filter-name>requestContextFilter</filter-name> <filter-class>org.springframework.web.filter.RequestContextFilter</filter-class> </filter> <filter-mapping> <filter-name>requestContextFilter</filter-name> <url-pattern>/*</url

前端面试题总结(一)

狂风中的少年 提交于 2019-11-27 10:25:56
1 纯JS获取scrolltop值    document.body 和 document.documentElement 区别: document.body 返回的是 body节点 即<body> document.documentElement 返回的是 html 节点 即<html>   在chrome中 获取 scrollTop 只能用 docume.body.scrollTop;   在IE中 没有doctype声明 使用 document.body.scrollTop;有doctype声明的使用document.documentElement.scrollTop;   SO... 兼容性写法 :   const scrollTop = document.documentElement.scrollTop || docume.body.scrollTop 2 详述JS闭包原理和意义   闭包是指有权访问另一个函数作用域中的变量和函数。创建闭包的常见方式,就是在一个函数内部创建另一个函数。   举个例子 1 var name = "visiliki" 2 function user() { 3 function getName () { 4 console.log(name) 5 } 6 getName() 7 } 8 user()   在 getName 函数中获取

python基础--函数作用域

别来无恙 提交于 2019-11-27 09:31:06
# 在Python中,函数的变量并不是在什么地方都可以访问的,访问权限取决于这个变量是在哪里定义的。 # 变量的作用域决定了那一部分程序可以访问哪个特定的变量名称 # python的函数作用域一共有四种 # L (Local) 局部作用域 # E (Enclosing) 闭包函数外的函数中 # G (Global) 全局作用域 # B (Built-in) 内建作用域 # 俗称LEGB,查找顺序为:L—E—G—B,局部找不到,就去外边的函数找, # 然后去寻找全局变量,最后去内建作用域中找。 num = 5 def printer(): num = 6 print(num) # 这时是局部作用域 6 printer() # print(num) # 这时是外部作用域 # 函数内部可以用全局作用域,内建作用域,而在函数外不能用局部作用域 # 在函数内部可以用全局作用域,但是有下边一种情况 # num = 5 # def change_num(): # num += 5 # change_num() # 此时是报错的,因为python内部对变量的保护,防止变量的值莫名其妙的被改变。 # 若要在函数内部改变全局变量或者函数外部的函数变量是,需要用到两个关键字 # global :说明此时我们用的是全局变量 # nonlocal :说明我们此时用的是函数外函数的变量 # 在看上边的例子

常见的前端常见问题01

不想你离开。 提交于 2019-11-27 09:27:12
目录 1.this指向什么......及call/apply/bind改变this指向8 2.作用域和作用域链 3.执行上下文 4.类 5.继承 6.原型、原型链 7. 执行多个并发请求 8.diff算法和虚拟DOM 1.this指向什么......及call/apply/bind改变this指向8 this是运行期间绑定,和它声明的环境没有关系,只与调用它的对象有关。 1.默认绑定: var name = 'lufei' function show() { var name = 'namei' console.log(this.name) } show() // lufei 可以看出最后 this 绑定在全局对象上,所以结果是 lufei。 2.隐式绑定: function show() { var member = 'namei' console.log(this.member) } var member = 'zoro' var caomao = { member: 'lufei', showMember: show } caomao.showMember() // lufei 这里最后通过 caomao 来调用这个函数,函数中的 this 则被绑定到 caomao 这个对象上。 3.显示绑定: var caomao = { member: 'lufei' } var

python3 之 类

血红的双手。 提交于 2019-11-27 07:36:29
目录: 名称和对象 作用域和命名空间 类定义 类对象 实例对象 方法对象 类和实例变量 继承和多继承 派生 多态 类提供了一种 组合数据和功能 的方 法 。创建一个新类意味着:创建一个新 类型 的对象,从而允许创建一个该类型的新 实例。 每个类的实例可以拥有: 保存自己状态的属性。 一个类的实例也可以有改变自己状态的方法(定义在类中的)。 一、名称和对象   对象具有个性,多个名称(在多个作用域内)可以绑定到同一个对象,这在其他语言中成为别名。   在处理不可变的基本类型(数字、字符串、元祖)时,可以安全的忽略它。   但是,对可变对象如(列表、字典、集合等),python代码的语义会产生惊人的影像。 二、作用域和命名空间 来源: https://www.cnblogs.com/gengyufei/p/11350691.html

JavaScript 预解析

独自空忆成欢 提交于 2019-11-27 07:28:51
一、预解析    1、概述    JavaScript 代码的执行是由浏览器中的 JavaScript 解析器来执行的。    JavaScript 解析器执行 JavaScript 代码的时候,分为两个过程:预解析过程和代码执行过程。   2、过程  把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。 把函数的声明提升到当前作用域的最前面,只会提升声明,不会提升调用。 先后规则:先提升 var,在提升function 二、解析规则   1、全局解析与函数内部解析规则一致 变量提升:定义变量的时候,变量的声明会被提升到作用域的最上面,变量的赋值不会提升。 函数提升:JavaScript 解析器首先会把当前作用域的函数声明提前到整个作用域的最前面 三、案例 来源: https://www.cnblogs.com/niujifei/p/11351138.html

angualr控制器是什么?

时光怂恿深爱的人放手 提交于 2019-11-27 07:12:52
这里是修真院前端小课堂,每篇分享文从 八个方面深度解析前端知识/技能,本篇分享的是: 【angualr控制器是什么?】 大家好,我是IT修真院深圳分院第11期的学员叶泽彪,一枚正直纯洁善良的WEB程序员,今天给大家分享一下,修真院官网JS任务2,深度思考中的知识点——angualr控制器是什么? 1.背景介绍 了解控制器之前,我们先来了解一下什么是MVVM模式。MVVM模式是Model-View-ViewMode(模型-视图-视图模型)模式的简称。 在angular中MVVM模式主要分为四部分: View:它专注于界面的显示和渲染,在angular中则是包含一堆声明式Directive的视图模板。 ViewModel:它是View和Model的粘合体,负责View和Model的交互和协作,它负责给View提供显示的数据,以及提供了View中Command事件操作Model的途径;在angular中$scope对象充当了这个ViewModel的角色; Model:它是与应用程序的业务逻辑相关的数据的封装载体,它是业务领域的对象,Model并不关心会被如何显示或操作,所以模型也不会包含任何界面显示相关的逻辑。在web页面中,大部分Model都是来自Ajax的服务端返回数据或者是全局的配置对象;而angular中的service则是封装和处理这些与Model相关的业务逻辑的场所

public,protected,friendly,private的访问权限

試著忘記壹切 提交于 2019-11-27 05:50:55
请说出作用域public,private,protected,以及不写时的区别 这四个作用域的可见范围如下表所示。 说明:如果在修饰的元素上面没有写任何访问修饰符,则表示friendly。 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × friendly是c++中的关键字 备注:只要记住了有4种访问权限,4个访问范围,然后将全选和范围在水平和垂直方向上分别按排从小到大或从大到小的顺序排列,就很容易画出上面的图了。 来源: http://www.cnblogs.com/fthjane/p/4732986.html

ES6入门一:块级作用域(let&const)、spread展开、rest收集

微笑、不失礼 提交于 2019-11-27 05:02:59
let声明 const声明 块级作用域 spread/rest 一、let声明与块作用域 在ES6之前,JavaScript中的作用域基本单元就是function。现在有了let就可以创建任意块的声明,也被称为作用域块。这意味者只需要“{}”就可以创建一个作用域。不再像var声明变量那样总归属于包含函数或全局。例如: 1 var a = 2; 2 { 3 let a = 3 4 console.log(a); //3 5 } 6 console.log(a); //2 在相关的资料中看到有介绍,let声明在被正式列入标准之前长这样: 1 //这种写法不合法,可以理解它为let语法的前身 2 let (a = 2, b, c){ 3 //... 4 } 这种写法从语法设计角度来说被称为显示声明,也就是说声明一个作用域块,而现在{let a = 1;}这种写法被称为隐式声明,这种声明被称为作用域劫持。我想选择隐式的声明方式不是没有原因的,比如let在for中的应用: 1 var func = []; 2 for(let a = 0; a < 5; a++){ 3 func.push(function(){ 4 console.log(a); 5 }); 6 } 7 func[3](); //3 (如果for内使用var声明a,打印结果会是5)