ECMAScript

使用“ let”和“ var”有什么区别?

可紊 提交于 2019-11-30 16:43:28
ECMAScript 6引入 了 let 语句 。 我听说它被描述为“局部”变量,但是我仍然不太确定它的行为与 var 关键字有何不同。 有什么区别? 什么时候应该 let 在使用 var ? #1楼 范围规则 主要区别是作用域规则。 var 关键字声明的变量的作用域范围是立即函数主体(因此,函数作用域),而 let 变量的作用域范围是由 { } 表示的直接 封闭 块(因此,块作用域)。 function run() { var foo = "Foo"; let bar = "Bar"; console.log(foo, bar); { let baz = "Bazz"; console.log(baz); } console.log(baz); // ReferenceError } run(); 将 let 关键字引入该语言的原因是函数范围令人困惑,并且是JavaScript中错误的主要来源之一。 从 另一个stackoverflow问题 看这个示例: var funcs = []; // let's create 3 functions for (var i = 0; i < 3; i++) { // and store them in funcs funcs[i] = function() { // each should log its value. console

使用“ let”和“ var”有什么区别?

旧时模样 提交于 2019-11-30 16:15:21
ECMAScript 6引入 了 let 语句 。 我听说它被描述为“局部”变量,但是我仍然不太确定它的行为与 var 关键字有何不同。 有什么区别? 什么时候应该 let 在使用 var ? #1楼 范围规则 主要区别是作用域规则。 var 关键字声明的变量的作用域范围是立即函数主体(因此,函数作用域),而 let 变量的作用域范围是由 { } 表示的直接 封闭 块(因此,块作用域)。 function run() { var foo = "Foo"; let bar = "Bar"; console.log(foo, bar); { let baz = "Bazz"; console.log(baz); } console.log(baz); // ReferenceError } run(); 将 let 关键字引入该语言的原因是函数范围令人困惑,并且是JavaScript中错误的主要来源之一。 从 另一个stackoverflow问题 看这个示例: var funcs = []; // let's create 3 functions for (var i = 0; i < 3; i++) { // and store them in funcs funcs[i] = function() { // each should log its value. console

ECMAScript

我们两清 提交于 2019-11-30 14:58:34
JavaScript分为 ECMAScript,DOM,BOM。 BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”。 DOM (Document Object Model)是指文档对象模型,通过它,可以访问HTML文档的所有元素。 Window对象是客户端JavaScript最高层对象之一,由于window对象是其它大部分对象的共同祖先,在调用window对象的方法和属性时,可以省略window对象的引用。 例如:window.document.write()可以简写成:document.write()。 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。 次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。 该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript, 有两个方面的原因。 一是商标,JavaScript本身已被Netscape注册为商标。 二是想体现这门语言的制定者是ECMA,而不是Netscape

一文读懂JavaScript和ECMAScript的区别

亡梦爱人 提交于 2019-11-30 14:41:34
一文读懂JavaScript和ECMAScript的区别 这篇文章代表了我目前对 JavaScript 和 ECMAScript 之间差异的理解。文章适合那些熟悉 JavaScript 但又想更加清楚地了解其与 ECMAScript、web 浏览器、Babel 等是何种关系的人。你还会额外了解到脚本语言、JavaScript 引擎以及 JavaScript 运行时。 作者:OSC - 协作翻译来源: 开源中国 | 2017-11-13 11:31 收藏 分享 我曾试着在谷歌上检索 “ JavaScript 和 ECMAScript 之间的区别。” 最后我在得到的海量的混淆不清又相互矛盾的结果中彻底绝望了: “ECMAScript 是标准。” “JavaScript 是标准。” “ECMAScript 是规范。” “JavaScript 是 ECMAScript 标准的实现。” “ECMAScript 是标准化的 JavaScript。” “ECMAScript 是一门语言。” “JavaScript 是 ECMAScript 的一个分支。” “ECMAScript 是 JavaScript。” 忍住,别哭。我强打精神决定做一些痛苦但却有成果的研究。 这篇文章代表了我目前对 JavaScript 和 ECMAScript 之间差异的理解。文章适合那些熟悉 JavaScript

谈谈神秘的ES6——(一)初识ECMAScript

喜夏-厌秋 提交于 2019-11-30 14:41:22
谈谈神秘的ES6——(一)初识ECMAScript 在《零基础入门JavaScript》我们就说过,ECMAScript是JavaScript的核心,是JavaScript语法和语义的解释器,同时也是一个标准。而ECMAScript标准其实也有一个发展的历程,每一代,它都更新了一些东西,让JavaScript更强大。这一节课,我们就来了解一下ECMAScript。 ECMAScript的发展历史 1995年,那时候的浏览器还只支持html和简单的css,这时候有一个浏览器巨头企业——网景,它不甘于做静态网站,于是呢,招了个大咖Brendan,开发了一个可供浏览器使用的函数式语言,经过近一年时间的迭代,慢慢形成了JavaScript的祖先。这时候微软跑出来了,捆绑IE3.0发布了一个JScript跟JavaScript形成竞争关系。ECMA国际觉得说太混乱了,于是以ECMAScript的名字,被标准化到ECMA-262规范中,规范指定者,是ECMA下一个叫TC39的技术委员会。在 1996年11月开始,TC39不断完善规范,并于 1997年6月 ,发布了 ECMA-262 的第一版。 之后一年中,规范依据 ISO / IEC 16262国际标准 进行了改进,并由ISO认证机构大量审查, 1998年6月 正式发布 第二版 。 1999年12月,第三版也发布了,这一版的规范带来了

ECMAScript运算符之《条件运算符》

六月ゝ 毕业季﹏ 提交于 2019-11-30 12:54:32
ECMAScript 条件运算符,也说三元运算符 直接来例子吧:这样更直接点 例子1: var num1 = false; var nums1 = num1 ? '第一个' : '第二个'; console.log(nums1);//第二个 例子2: var num2 = true; var nums2 = num2 ? '第一个' : '第二个'; console.log(nums2);//第一个function(){ //跟单:www.gendan5.com 例子3: var num3 = 3; var num4 = 4; console.log((num3 > num4) ? '第一个' : '第二个');//第二个 console.log((num3 < num4) ? '第一个' : '第二个');//第一个 大概意思是这样的: 1、当满足条件的时候(返回true),使用第一个参数 2、不满足条件的时候(返回false),使用第二个参数 条件运算符是JS里面用的比较平常的一个方法,大家一定要好好学习哦! 来源: https://my.oschina.net/u/4178038/blog/3111159

ECMAScript的数据类型有哪些?

拟墨画扇 提交于 2019-11-30 09:45:42
简单数据类型 :Undefined、NULL、String、Number、Boolean 复杂数据类型 :Object 简单数据类型讲解 一、Undefined 1、值定义之后没有初始化 2、值定义之后,使用undefined来初始化 3、值为undefined 4、不建议使用undefined来初始化或者作为初始值 5、Number(undefined) = NaN 6、undefined:缺少值 二、NULL 1、空对象的指针 2、如果想初始化可以对对象变量进行初始化 3、Number(null) = 0 4、null:没有对象 三、String 1、单引号和双引号相同 2、输出单引号和双引号的时候需要转移字符 3、值.toString()、String(值) 四、Number 1、整数和浮点数 2、三种进制:8进制、10进制、16进制(计算的时候都会转换成10进制计算) 3、E表示法 4、数字大小: 最大数:Number.MAX_VALUE = 1.7976931348623157e+308 最小数:MIN_VALUE = 5e-324 比最大还大:Infinity 比最小还小:-Infinity 判断数字是否在最大最小范围之内:isFinite(值) 5、NaN、isNaN() NaN:如果一个返回值本来返回一个数字,但是没有返回数字,那么会爆出NaN isNaN(值)

ECMAScript运算符之《一元运算符》

孤人 提交于 2019-11-30 09:37:16
ECMAScript一元运算符: 1、只能操作一个值的操作符 2、递增(++),递减(–) 3、前置、后置 前置:++n/–n (代码执行之前) 后置:n++/n– (代码执行完成之后) 4、delete 运算符 删除定义的对象属性/方法的引用,不要使用js自身带的方法名作为值 5、void 运算符 对任何值返回 undefined。该运算符通常用于避免输出不应该输出的值 6、typeof运算符 一、delete运算符 : 例子1: var a = new Object(); a.name = "123";// 设置name属性 console.log(a.name)//打印123 delete a.name;//删除name console.log(a.name)//打印undefined 例子2: var b = new Object(); console.log(b.name)//打印undefined 二、void运算符: 例子1: var a = "123"; console.log(void(a))//打印undefined //把a的值返回为undefined 例子2: <a href="javascript:window.open('http://www.cenggel.com')">打开新的窗口</a><!--打开了新的窗口--> 三、递增/递减: 递增/递减的

一个后端er想进前端娱乐圈

☆樱花仙子☆ 提交于 2019-11-30 08:37:10
经过几天的折腾,总算是略微明白前端娱乐圈的一堆工具。 模块化 为什么要折腾这些? 因为我想用js的模块化,不想再jquery一把梭。 第一个想到的是typescript,过了一遍文档,把现有项目的部分功能用ts改写后没问题,学习内容包括: 了解Node.js,会用其运行脚本; 了解包管理工具npm,据~说yarn更好,遂采用后者,会用其安装、卸载包; 学习typescript语法,并改写现有项目的几个函数。 随后准备编译,合并进项目master,接下来问题来了,浏览器不能运行。 报错信息为: exports is not defined ,这个信息让我走上了瞎折腾的道路。 规范 得知现代浏览器不支持 exports 关键词,那 exports 又是什么?它是 CommonJs 中的一个语法,我想起ts配置文件中有个编译选项就是 "module": "commonjs" 。 这个 CommonJs 又是什么?它是一种规范,就是希望大家都能按这个标准来,同类规范还有: AMD (Asynchronous Module Definition) CMD (Common Module Definition) ES6 (ECMAScript 6) 这里引用 《前端模块化详解(完整版)》 中的一张图,关于模块化的发展进程和相关介绍,大家可以看看这篇文章,写的很好。 转换器

ECMAScript运算符之《等性运算符》

▼魔方 西西 提交于 2019-11-30 07:48:33
等性运算符一般用在判断两个变量是否相等的运算。在处理原始值时,这种运算相当简单,涉及对象,任务就稍有点复杂。 性运算符分: 1、等号和非等号用于处理原始值 2、全等号和非全等号用于处理对象 一、等号和非等号(比较值) 在 ECMAScript 中, 1、等号由双等号(==)表示,当且仅当两个运算数相等时,它返回 true。 2、非等号由感叹号加等号(!=)表示,当且仅当两个运算数不相等时,它返回 true。为确定两个运算数是否相等,这两个运算符都会进行类型转换。 执行类型转换的规则如下: 1、如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1 2、如果一个运算数是字符串,另一个是数字,在检查相等性之前,要尝试把字符串转换成数字 3、如果一个运算数是对象,另一个是字符串,在检查相等性之前,要尝试把对象转换成字符串 4、如果一个运算数是对象,另一个是数字,在检查相等性之前,要尝试把对象转换成数字 来点栗子说事儿: 一、如果一个运算数是 Boolean 值,在检查相等性之前,把它转换成数字值。false 转换成 0,true 为 1 console.log(false == 0);//true console.log(true == 1);//true console.log(false == 1);//false