作用域

js作用域

戏子无情 提交于 2019-12-31 08:14:20
作用域是可访问变量的集合。 作用域精解: 1.运行期上下文:当函数执行时,会创建一个称为执行期上下文的内部对象。一个 执行期上下文定义了一个函数执行时的环境,函数每次执行时对应的执行上下 文都是独一无二的,所以多次调用一个函数会导致创建多个执行上下文,当函 数执行完毕,它所产生的执行上下文被销毁。 2.查找变量:从作用域链的顶端一次向下查找。 3.[[scope]]:每个javascript函数都是一个对象,对象中有些属性我们可以访问, 但有些不可以这些属性仅供javascript引擎存取,[[scope]]结束其中一个。 [[scope]]指的就是我们所说的作用域,其中存储了运行期上下文的集合 4.作用域链:[[scope]]中所存储的执行期上下文对象的集合,这个集合呈链式连接, 我们把这种链式连接叫做作用域链。 JavaScript 作用域 在 JavaScript 中, 对象和函数同样也是变量。 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 JavaScript 函数作用域: 作用域在函数内修改。 JavaScript 局部作用域 变量在函数内声明,变量为局部作用域。 局部变量:只能在函数内部访问。 实例 // 此处不能调用 carName 变量 function myFunction ( ) { var carName = " Volvo " ;

JS函数作用域及作用域链理解

血红的双手。 提交于 2019-12-30 12:37:15
JS函数作用域及作用域链理解 从事web开发工作,难免会对客户端语言JavaScript一些概念有些似懂非懂的,甚至仅停留在实现功能的层面上,接下来的文章,是记录我对JavaScript的一些概念的理解。 变量作用域 在JavaScript中全局变量的作用域比较简单,它的作用域是全局的,在代码的任何地方都是有定义的。然而函数的参数和局部变量只在函数体内有定义。另外局部变量的优先级要高于同名的全局变量,也就是说当局部变量与全局变量重名时,局部变量会覆盖全局变量(如下面例子)。 var num = 1 ; //声明一个全局变量 function func ( ) {   var num = 2 ; //声明一个局部变量 ​ return num ; } console . log ( func ( ) ) ; //输出:2 注:声明局部变量时一定要使用var,否则,解释器会将该变量当做全局对象window的属性。 函数作用域 在JavaScript中使用的是函数作用域(变量在声明它们的函数体以及这个函数体嵌套的任意函数体都是有定义的)。(如下面的例子) function func ( ) { console . log ( num ) ; //输出:undefined,而非报错,因为变量num在整个函数体内都是有定义的 var num = 1 ; //声明num

C#的垃圾回收机制

雨燕双飞 提交于 2019-12-30 04:49:33
前言 大家都知道使用高级语言的时候,我们不必担心内存回收的问题,因为有垃圾回收器会自动处理所有内存,虽然不必自己手动去管理内存,但是我们还是需要详细去理解一下垃圾回收机制到底发生什么事情? 1.栈存储 在处理器的虚拟内存中,有一个区域称为栈,栈存储的是值数据类型。 另外,在调用一个函数的时候,函数的参数是使用栈副本的拷贝, 可能有人说了不是有引用传递吗?这么感觉你说的好像只有值传递,请客官看完这篇文章相信你就明白了。为了理解栈的工作原理,需要知道变量作用域是什么,这个自行百度...如果变量a在变量b之前进入作用域,b就首先超出作用域,b也就首先释放,请看如下代码: { int a; { int b; //TODO doSomething } } 首先声明变量a,接着在内部代码声明变量b,然后内部代码块结束地时候,b就超出作用域,最后a也超出作用域,在释放变量时, 栈会按照这个顺序释放内存,与分配内存的顺序相反,先分配的最后释放 ,这就是栈的工作方式。 程序第一次开始运行时,栈指针指向为栈保留的内存块尾端,栈实际是向下填充的,即高内存地址向低内存填充,当数据入栈,栈指针就会随之调整,以始终向下空闲存储单元,要存储一个int型的值,为了容纳下该int型,应从栈指针往下减去4,double型是往下减去8,当某个值类型超出作用域以后(比如int型),为了从内存中删除这个变量

Javascript并发模型和事件循环

爱⌒轻易说出口 提交于 2019-12-29 02:40:52
Javascript并发模型和事件循环 JavaScript的"并发模型"是基于事件循环的,这个并发模型有别于Java的多线程, javascript的并发是单线程的。 Javascript 中有个重要一块,Event Loop,能把单线程的 JavaScript 使出 多线程的感觉。 " Event Loop是一个程序结构,用于等待和发送消息和事件。 (a programming construct that waits for and dispatches events or messages in a program.)" 简单的说,就是在程序中(不一定是浏览器)中跑两个线程,一个负责程序本身的运行,作为主线程; 另一个负责主线程与其他线程的的通信, 被称为“Event Loop 线程" 。 每当遇到异步的 setTimeOut ,setInterval 这些异步任务,交给 EventLoop 线程,然后自己往后运行,等到主线程运行完后,再去 Event Loop 线程拿结果。 这种模型人称 "asynchronous " 或 "non-blocking" 模行。 我简单的画了一个 javascript 的执行图,我们通过图,逐步分析. 栈 函数调用时所用的执行环境栈 当js方法被调用时,会进入一个执行环境(execution context),如果有另外一个方法被调用了

ES6 快速入门

坚强是说给别人听的谎言 提交于 2019-12-29 01:15:03
ES6 初识 ES6 是 ECMAScript 6.0 的简写,即 JavaScript 语言的下一代标准,已经在 2015年6月正式发布了,它的目标是让JS能够方便的开发企业级大型应用程序,因此,ES6的一些规范正在逐渐向Java、C# 等后端语言标准靠近。在 ES6 规范中,比较重大的变化有以下几个方面: 新增 let、const 命令 来声明变量,和var 相比,let 声明的变量不存在变量提升问题,但没有改变JS弱类型的特点,依然可以接受任意类型变量的声明;const 声明的变量不允许在后续逻辑中改变,提高了JS语法的严谨性。 新增解构赋值、rest 语法、箭头函数等,这些都是为了让代码看起来更简洁,而包装的语法糖。 新增模块化机制,这是 JavaScript 走向规范比较重要的一步,让前端更方便的实现工程化。 新增类和继承的概念,配合模块化,JavaScript 也可以实现高复用、高扩展的系统架构。 新增模板字符串功能,高效简洁,结束拼接字符串的时代。 新增 Promise 机制,解决异步回调多层嵌套的问题。 ES6 介绍 let和const let ES6新增了let命令,用于声明变量。其用法类似var,但是声明的变量只在let命令所在的代码块内有效。 { let x = 10; var y = 20; } x // ReferenceError: x is not

变量作用域

本小妞迷上赌 提交于 2019-12-28 22:51:39
全局作用域   在全局内使用var关键字定义变量,或者在函数内直接使用变量。全局变量在定义后,可以在函数内部访问得到。 局部作用域   在函数内部使用var关键字属于局部变量,在函数内部任何位置,只要是定义的局部变量如果在函数外部定义了相同名字的全局变量,在使用是要注意以下问题。 1 var a =3; 2 3 function fun(){ 4 console.log(a); 5 var a =0; 6 } 7 8 fun(); 9 10 11 // 输出结果为undefined   在全局变量和局部变量重名时,可以使用this关键字做区分 1 var a = 3; 2 function fun(){ 3 var a =15; 4 console.log(a+this.a); 5 } 6 fun(); 7 8 // 输出结果18   在重复定义一个变量时,如果没有重新赋值,结果不会改变。 1 var a =12; 2 var a; 3 console.log(a); 4 5 var b = function(){ 6 console.log("bbb"); 7 } 8 var b; 9 b(); 10 11 // 输出结果为 12 bbb   上面这个例子我不仅使用了变量作为测试,还使用了函数作为参考,因为函数的值在堆中存储,而函数名也存储在栈中,函数名指向地址

JS基础知识梳理汇总 如何能学好Web前端开发

青春壹個敷衍的年華 提交于 2019-12-28 16:13:06
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 学习要一步一个脚印,不能一口吃一个胖子,所有的实战经验都是基于理论而积累形成,今天的Web前端入门学习教程就给大家梳理汇总一下JS相关的基础知识点。   1、执行环境:有时也叫环境,是JavaScript中最为重要的一个概念,执行环境定义了变量或函数有权访问的其他数据。   2、变量对象:每一个执行环境都有一个与之关联的变量对象,环境中定义的所有的变量和函数都保存在这个的对象中。   3、作用域链:代码在环境中执行时,会创建变量对象的作用域链,保证对执行环境有权访问的所有变量和函数的有序访问。作用域链的前端,始终是当前执行代码所在环境的变量对象。   4、活动对象:如果当前执行环境是函数,则将活动对象作为变量对象。   5、可执行代码:1)全局代码:例如加载外部的JS文件或者本地标签内的代码,全局代码不包括 function体内的代码;2)函数代码:function体内的代码;3)eval代码:eval()函数计算某个字符串,并执行其中的JS代码,比如eval("alert('hello world')")。   6、执行上下文栈:在一个JS程序中,必定会产生多个执行上下文,JS引擎会以栈的方式来处理它们,也就是执行上下文栈。   7、作用域:JS是一种没有块级作用域的语言(包括if

02函数整合篇

只谈情不闲聊 提交于 2019-12-28 13:14:36
目录 前言 函数 函数的简介 函数的结构与调用 函数的返回值 函数的参数 万能参数,仅限关键字参数 *的魔性用法。 名称空间作用域 高阶函数 内置函数 globals locals global nonlocal关键字 函数名的应用 默认参数的坑 可迭代对象和迭代器 while模拟for循环 可迭代对象与迭代器的对比 可迭代对象与迭代器的对比 生成器 yield from 出错题 生成器表达式,列表推导式,字典推导式 匿名函数 小练习 内置函数 内置函数 I 了解 callable 判断是否可调用 bin oct hex进制转换 all any判断是否全部为真或假 内置函数II 重要 sep 设定分隔符。 end去除默认换行 sum() 数字相加求和 min max()可以加功能 reversed() 将一个序列翻转 sorted排序函数 可以加key map对元素进行映射 zip() 拉链方法 filter筛选过滤 返回迭代器 闭包 装饰器 标准版的装饰器; 带参数的装饰器 多个装饰器装饰一个函数 递归 前言 本篇博客整合了以下与函数有关的知识点 函数 函数的简介 # 函数:以功能(完成一件事)为导向,登录,注册,len,一个函数就是一个功能。 随调随用。 # 减少代码的重复性。 # 增强了代码的可读性。 函数的结构与调用 定义一个函数 def len_num(a):

《JavaScript启示录》

房东的猫 提交于 2019-12-28 12:15:32
《JavaScript启示录》 基本信息 作者: (美)Cody Lindley 译者: 徐涛 出版社:人民邮电出版社 ISBN:9787115334947 上架时间:2014-2-21 出版日期:2014 年3月 开本:16开 页码:148 版次:1-1 所属分类:计算机 更多关于》》》 《JavaScript启示录》 编辑推荐 JavaScript知名专家力作,深入剖析JavaScript。   知名JavaScript专家汤姆大叔徐涛倾力翻译。如果你是一名JavaScript新手或中级开发人员,本书将会帮助你巩固对JavaScript的理解,特别是当你使用JavaScript库的时候。在这本简明扼要的图书中,JavaScript专家Cody Lindley通过剖析JavaScript对象及其细微区别,准确地提供了这种语言的详细信息。   库和框架能够帮助我们快速有效地构建Web应用程序,但是当它们出错或性能出问题的时候,知道这些库和框架是如何以及为何能够工作,就显得至关重要了。如果你已经准备好了深入了解JavaScript的内部核心原理,那么本书正是你所需要的。   通过本书,你将能够:   得到可以立即运行的真实代码,帮助你概括和理解ECMA-262第3版;   剖析JavaScript对象的创建过程;   学习复杂值、原始值、作用域和继承特性;  

python面试题

喜夏-厌秋 提交于 2019-12-28 03:52:36
首页 代码 文档 问答 资讯 经验 GitHub日报 | 安卓开发专栏 | 开发者周刊 | Android Studio 使用推荐 | Android开发推荐 登录 注册 www.open-open.com/lib OPEN经验 投稿 全部经验分类 Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim C++ C# JSON Ruby Linux Nginx Docker 所有分类 > 开发语言与工具 > Python开发 关于Python的面试题 Python 2016-01-25 11:02:47 发布 您的评价 : 5.0 收藏 3收藏 来自: https://github.com/taizilongxu/interview_python?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io Table of Contents Python语言特性 1 Python的函数参数传递 2 Python中的元类(metaclass) 3 @staticmethod和@classmethod 4 类变量和实例变量 5 Python自省 6 字典推导式 7