ECMAScript

深入理解JavaScript系列(14):作用域链(Scope Chain)

给你一囗甜甜゛ 提交于 2020-02-11 04:55:43
前言 在第12章关于变量对象的描述中,我们已经知道一个执行上下文 的数据(变量、函数声明和函数的形参)作为属性存储在变量对象中。 同时我们也知道变量对象在每次进入上下文时创建,并填入初始值,值的更新出现在代码执行阶段。 这一章专门讨论与执行上下文直接相关的更多细节,这次我们将提及一个议题——作用域链。 英文原文:http://dmitrysoshnikov.com/ecmascript/chapter-4-scope-chain/中文参考:http://www.denisdeng.com/?p=908本文绝大部分内容来自上述地址,仅做少许修改,感谢作者 定义 如果要简要的描述并展示其重点,那么作用域链大多数与内部函数相关。 我们知道,ECMAScript 允许创建内部函数,我们甚至能从父函数中返回这些函数。 var x = 10; function foo() { var y = 20; function bar() { alert(x + y); } return bar; } foo()(); // 30 这样,很明显每个上下文拥有自己的变量对象:对于全局上下文,它是全局对象自身;对于函数,它是活动对象。 作用域链正是内部上下文所有变量对象(包括父变量对象)的列表。此链用来变量查询。即在上面的例子中,“bar”上下文的作用域链包括AO(bar)、AO(foo)和VO

JS--我发现,原来你是这样的JS(一)(初识,历史)

末鹿安然 提交于 2020-02-02 05:08:47
一、前言: 前段时间看红宝书(JavaScript高级程序设计),但没有计划的去看,也没有做详细的笔记,读了之后有点空虚,感觉不对劲啊,学的东西很难记住,印象不深啊,有种挫败感。 作前端的js都学不好怎么做前端。后端都学js了,你说死不死。 因此吾阅之,再阅之,并决心记之以博客,以增强印象,作得读书笔记,以便日后翻看及供大家参阅与讨论。 温馨提示:本系列笔记言辞会有主观色彩,知识重点记录。 二、JavaScript历史 起源: 话说在上世纪末1995年,Netscape公司推出Navigator浏览器。人家公司有追求,不单单能实现静态HTML,人家还想要有动态效果,还想着能去处理表单的验证,不要老是等到后台那边才知道表单输入合不合法,特别在那个年代,一次一等就上分钟,现在我们等上个十秒都想关掉它是不是,嘴边还吐槽着什么破网站。 动手: 有目标就去做,Netscape公司大牛多,Brendan Eich 用10天(网上说10天)就把JavaScript搞了出来,刚出来时叫LiveScript,为了蹭蹭当红明星Java热度,就改成JavaScript了,所以事实上他们两没啥关系。 竞争: 看到Netscape公司有了js,微软感觉不行啊,我的IE要被干掉啊,同时也感到js的前途无量,于是弄了个名为JScript的JavaScript的实现。 标准:

前端之JavaScript

僤鯓⒐⒋嵵緔 提交于 2020-02-02 02:03:28
1 | 0 JavaScript概述 1 | 1 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。 该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。而是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。 因此ECMAScript和JavaScript的关系是,前者是后者的规格,后者是前者的一种实现。 1 | 2 ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009 ECMAScript 5 添加"strict mode"严格模式 添加JSON支持 2011 ECMAScript 5.1 版本变更

前端基础之JAVAScript

一世执手 提交于 2020-01-29 05:32:40
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是规范                    ECMAScript 尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。实际上,一个完整的 JavaScript 实现是由以下 3 个不同部分组成的: 核心(ECMAScript) 文档对象模型(DOM)

JavaScript入门基础知识

白昼怎懂夜的黑 提交于 2020-01-27 04:04:51
#JavaScript `JavaScript`简称`js`,`js`是一种轻量级脚本语言,是一种直译式的脚本语言,而在语法层面,`JavaScript`是一门对象模型语言. 在编程语言中,`JavaScript`是一种弱类型语言,相比较于`Java`等强类型语言,`JavaScript`更具有灵活性. `JavaScript`主要包含三部分:`ECMAScript`;`BOM`;`DOM`. ##ECMAScript `ECMAScript`是一种由欧洲计算机制造商协会(`European Computer Manufacturers Association`,简称`ECMA`),通过ECMA-262标准化的脚本`程序设计语言`。这种语言在`万维网`上被称为`JavaScript`或`JScript`,所以它可以理解为是`JavaScript`的一个标准,但实际上后两者是ECMA-262标准的实现和扩展。 ##ECMAScript的历史 *1998年6月,ECMAScript 2.0版发布。 *1999年12月,ECMAScript 3.0版发布,成为JavaScript的通行标准,得到了广泛支持。 *2007年10月,ECMAScript 4.0版草案发布,对3.0版做了大幅升级,预计次年8月发布正式版本。草案发布后,由于4.0版的目标过于激进,各方对于是否通过这个标准

快速学习-ES6语法指南

╄→尐↘猪︶ㄣ 提交于 2020-01-27 01:44:01
4、ES6 语法指南 后端项目搭建完毕,接下来就是前端页面了。不过在这之前需要一些准备工作。我们需要学习ES6的语法标准。 什么是ES6?就是ECMAScript第6版标准。 4.1.什么是ECMAScript? 来看下前端的发展历程: web1.0时代: 最初的网页以HTML为主,是纯静态的网页。网页是只读的,信息流只能从服务的到客户端单向流通。 开发人员也只关心页面的样式和内容 即可。 web2.0时代: 1995年,网景工程师Brendan Eich 花了10天时间设计了JavaScript语言。 1996年,微软发布了JScript,其实是JavaScript的逆向工程实现。 1997年,为了统一各种不同script脚本语言,ECMA(欧洲计算机制造商协会)以JavaScript为基础,制定了 ECMAscript 标准规范。JavaScript和JScript都是 ECMAScript 的标准实现者,随后各大浏览器厂商纷纷实现了 ECMAScript 标准。 所以,ECMAScript是浏览器脚本语言的规范,而各种我们熟知的js语言,如JavaScript则是规范的具体实现。 4.2.ECMAScript的快速发展 而后,ECMAScript就进入了快速发展期。 1998年6月,ECMAScript 2.0 发布。 1999年12月,ECMAScript 3.0 发布

es6简单小复习

喜欢而已 提交于 2020-01-22 21:28:38
Ecmascript 6 ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。 Ecmascript 是 JavaScript 语言的标注规范 JavaScript 是 Ecmascript 规范的具体实现 具体实现取决于各大浏览器厂商的支持进度 Ecmascript 6 也被称作 Ecmascript 2015 各大浏览器厂商对于最新的 Ecmascript 6 标准支持可以参照: http://kangax.github.io/compat-table/es6/ 对于不支持 ES6 的环境,可以使用一些编译转码工具做转换处理再使用 例如 babel let 和 const let: let 类似于 var,用来声明变量 通过 let 声明的变量不同于 var,只在 let 命令所在的代码块内有效(块级作用域) let 声明的变量不存在变量提升 let不允许在相同作用域内,重复声明同一个变量 const: const声明一个只读的常量。一旦声明,常量的值就不能改变 const 声明必须初始化 const的作用域与let命令相同:只在声明所在的块级作用域内有效 const命令声明的常量也是不提升,必须先声明后使用 const声明的常量,也与let一样不可重复声明 解构赋值 ES6 允许按照一定模式

javascript(ECMAScript)

拟墨画扇 提交于 2020-01-21 23:42:45
ECMAscript (核心) DOM (文档对象模型) BOM (浏览器对象模型) javascript在开发中绝大多数情况是基于对象的,也是面向对象的 来源: https://www.cnblogs.com/startl/p/12227333.html

浏览器(内核,同源策略原理,渲染...)

元气小坏坏 提交于 2020-01-19 02:37:30
浏览器存储 特点 cookie localStorage sessionStorage indexDb 生命周期 可过期 除非清理,否则一直存在 页面关闭就清理 除非清理,否则一直存在 存储大小 4K 5M 5M ∞ 与服务端通信 请求携带在 header 头部 no no no 浏览器内核 浏览器最重要或者说核心的部分是“Rendering Engine”,可大概译为“渲染引擎”,不过我们一般习惯将之称为“浏览器内核”。 通常所谓的浏览器内核也就是浏览器所采用的渲染引擎 浏览器内核主要包括三个分支技术: 排版渲染引擎 、 JavaScript引擎 , 以及其他 。 Trident IE 内核 其中 IE8 的 JavaScript 引擎是 JScript 引擎, IE9 开始使用 Chakra Gecko FF 内核 JavaScript 引擎使用 Spider Monkey 第一款 JavaScript 引擎 Webkit Safari 内核 Chrome 内核原型 Android 默认浏览器使用 Webkit 内核 Blink Chrome 最新的内核(Safari 目前也使用的内核) 而谷歌方面,则使用了自己研发的 V8 引擎 内核 是否开源 插件支持 应用浏览器 支持操作系统 Trident 否,但提供接口调用 ActiveX IE Windows Gecko 是