ECMAScript

es6语法

限于喜欢 提交于 2019-12-27 01:14:11
1.什么是ES6 ES6,是ECMAScript 6的简称,它是 JavaScript 语言的下一代标准,己于 2015 年 6 月正式发 布。 它的目标是使 JavaScript语言可以用于编写复杂的大型应用程序,成为企业级开发语言。 2.什么是ECMAScript? 前端的发展历程: web1.0时代 最初的网页以 HTML为主,是纯静态的网页。网页是只读的,信息流只能从服务的到客户端单向流通。开发人员 也只关心页面的样式和内容即可。 web2.0时代: 1995 年,网景工程师Brendan Eich 花了10天时间设计了JavaScript语言。 1996 年,微软发布了JScript,其实是JavaScript的逆向工程实现。 1997 年,为了统一各种不同script脚本语言,ECMA(欧洲计算机制造商协会)以JavaScript为基础,制定了 ECMAscript 标准规范。JavaScript和JScript都是 ECMAScript 的标准实现者,随后各大浏览器厂商纷纷实现了 ECMAScript 标准。 2.1 ECMAScript的快速发展 而后,ECMAScript就进入了快速发展期。 1998 年6月,ECMAScript 2.0 发布。 1999 年12月,ECMAScript 3.0 发布。这时,ECMAScript 规范本身也相对比较完善和稳定了

前端基础之JavaScript

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

把 JSON 文本转换为 JavaScript 对象

最后都变了- 提交于 2019-12-25 15:17:27
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 创建包含 JSON 语法的 JavaScript 字符串: var txt = '{ "sites" : [' + '{ "name":"菜鸟教程" , "url":"www.runoob.com" },' + '{ "name":"google" , "url":"www.google.com" },' + '{ "name":"微博" , "url":"www.weibo.com" } ]}'; 由于 JSON 语法是 JavaScript 语法的子集,JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。 eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误: var obj = eval ("(" + txt + ")"); JSON 解析器 eval() 函数可编译并执行任何 JavaScript 代码。这隐藏了一个潜在的安全问题。 使用 JSON 解析器将 JSON 转换为 JavaScript 对象是更安全的做法。JSON 解析器只能识别 JSON 文本,而不会编译脚本。 在浏览器中,这提供了原生的 JSON 支持,而且 JSON

可以使用哪些技术在JavaScript中定义类,它们的权衡是什么?

懵懂的女人 提交于 2019-12-24 19:50:21
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我喜欢在目前正在从事的大型项目中使用OOP。 我需要用JavaScript创建几个类,但是,如果我没记错的话,至少有两种方法可以做到这一点。 语法是什么,为什么要用这种方式呢? 我想避免使用第三方库-至少在一开始。 在寻找其他答案时,我找到了文章“ 使用JavaScript进行面向对象的编程”,第I部分:继承-文档JavaScript ,该文章讨论了 JavaScript 中的面向对象的编程。 有更好的继承方法吗? #1楼 var Animal = function(options) { var name = options.name; var animal = {}; animal.getName = function() { return name; }; var somePrivateMethod = function() { }; return animal; }; // usage var cat = Animal({name: 'tiger'}); #2楼 以下是迄今为止我在javascript中使用过的创建对象的方法 范例1: obj = new Object(); obj.name = 'test'; obj.sayHello = function() { console.log('Hello

Javascript初识之数据类型

守給你的承諾、 提交于 2019-12-24 08:29:37
一、JavaScript概述 1、ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript提交给国际标准化组织ECMA,希望这门语言能够成为国际标准。 次年,ECMA发布262号标准文件(ECMA-262)的第一版,规定了浏览器脚本语言的标准,并将这种语言称为ECMAScript,这个版本就是1.0版。 该标准一开始就是针对JavaScript语言制定的,但是没有称其为JavaScript,有两个方面的原因。一是商标,JavaScript本身已被Netscape注册为商标。 二是想体现这门语言的制定者是ECMA,而不是Netscape,这样有利于保证这门语言的开发性和中立性。 因此ECMAScript是JavaScript的规格,JavaScript是ECMAScript的一种实现,在日常场合,这两个词是可以互换的。 javascript遵守ECMA指定的标准,换句话说javascript就是ECMAscript的方言。 2、ECMAScript的历史 年份 名称 描述 1997 ECMAScript 1 第一个版本 1998 ECMAScript 2 版本变更 1999 ECMAScript 3 添加正则表达式 添加try/catch ECMAScript 4 没有发布 2009

JS笔记(知识点查漏补缺)

只谈情不闲聊 提交于 2019-12-24 03:22:05
JS是前端开发的一门脚本语言<解释型语言> 解释型语言 ① 概念:程序执行之前,不需要编译就可以直接运行,在运行时边解析边执行的语言 ② 代表:python、JavaScript、PHP、Ruby ③ 图示 编译型语言 ① 概念:程序执行之前,需要一个专门的编译过程,把程序编译成机器语言的文件,比如ipa、exe、jar文件 ② 代表: C/C++、Pascal、object-C、Switf ③ 图示: 编译型语言 由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它 解释型语言 跨平台性好,一些网页脚本、服务器脚本以及辅助开发接口这样的对速度要求不高、对不同系统平台的兼容性有一定要求的程序则通常使用它 JavaScript是一门高级解释性脚本语言 JS发展史 1995年 诞生 → LiveScript 1997年 发布ECMAScript 1.0 1998年 发布ECMAScript 2.0 1999年 发布ECMAScript 3.0 2007年 发布ECMAScript 4.0 2009年 发布ECMAScript 5.0 🚩 2015年 发布ECMAScript 6.0 🚩 JavaScript的组成(基于网页特效) ① ECMAScript ECMA欧洲计算机制造联合会 ECMAScript是ECMA指定的脚本语言的标准

附录B、了解ECMAScript 2016

纵饮孤独 提交于 2019-12-23 01:34:29
1、指数运算符 Math.pow()方法可以执行求幂运算。 a ** b也可以求幂运算。 let result = 5 ** 2; console.log(result); // 25 console.log(result === Math.pow(5,2)); // true ①、运算顺序 求幂运算符在js所有二进制运算符中具有最高的优先级(一元运算符的优先级高于**)。 let result = 2*5**2; console.log(result); // 50 ②、运算限制 求幂运算符左侧的表达式只能使用++或--,其他情况要使用括号。 let num1 = 2,num2 = 2; console.log(++num1 ** 2); // 9 console.log(num1); // 3 console.log(num2-- ** 2); // 4 console.log(num2); // 1 2、Array.prototype.includes()方法 String.prototype.includes():检查给定字符串中是否存在某些子字符串。 ①、使用Array.prototype.includes()方法 两个参数:要搜索的值和可选的开始搜索的索引位置,找到返回true,否则返回false。 let values = [1,2,3]; console.log

查找项目是否在JavaScript数组中的最佳方法? [重复]

牧云@^-^@ 提交于 2019-12-20 19:13:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 这个问题已经在这里有了答案: 如何检查数组是否在JavaScript中包含对象? 47个答案 查找对象是否在数组中的最佳方法是什么? 这是我知道的最好方法: function include(arr, obj) { for(var i=0; i<arr.length; i++) { if (arr[i] == obj) return true; } } include([1,2,3,4], 3); // true include([1,2,3,4], 6); // undefined #1楼 从ECMAScript 2016开始,您可以使用 includes() arr.includes(obj); 如果要支持IE或其他较旧的浏览器: function include(arr,obj) { return (arr.indexOf(obj) != -1); } 编辑:这将无法在IE6、7或8上运行。 最好的解决方法是自行定义它(如果不存在): Mozilla (ECMA-262)版本: if (!Array.prototype.indexOf) { Array.prototype.indexOf = function(searchElement /*, fromIndex */) { "use strict";

【转】从“async”到async—Node异步流程控制总结

不羁岁月 提交于 2019-12-20 14:44:13
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Node的异步概念 理解异步非阻塞 提到Node, 异步非阻塞 会是第一个需要你理解的概念。很多人会把这实际上是两个概念的词混为一谈,认为异步就是非阻塞的,而同步就是阻塞的。从实际的效果出发,异步IO和非阻塞IO实际上都能达到我们对于IO繁重的网络应用并行IO的追求。但是实际上这是两个很不一样的概念。 从操作系统的内核角度出发 ,I/O调用 只有两种方式,阻塞和非阻塞 。二者的区别在于,对于使用阻塞IO调用,应用程序需要等待IO的整个过程都全部完成,即完成整个IO目的,此期间CPU进行等待,无法得到充分的利用。而对于使用非阻塞IO调用来说,应用程序发起IO请求之后不等待数据就立即返回,接下来的CPU时间片可用于其他任务,由于整个IO的过程并没有完成,所以还需要使用 轮询技术 去试探数据是否完整准备好。关于轮询技术细节和发展,此处不过多赘述,很推荐朴灵老师《深入浅出NodeJs》的第三章。 不难理解, 从应用程序的角度出发 ,我不管你操作系统内核是阻塞的IO调用还是非阻塞的IO调用,只要是我要的数据并没有给我,那么这就是同步的,因为我依旧是在等数据。所以对于这种情况下,应用程序的那“一根筋”就可以选择用同步还是异步的方式去面对该情况。同步即等待操作系统给到数据再进行下面的代码(单线程)

Callback Hell和ECMAScript6 Promise

試著忘記壹切 提交于 2019-12-20 14:28:34
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Promise 是 “14nodejs(7天)” 第五天的课程,但是 Promise 并不属于 Node.js 的内容,而是 ECMScript6 新增的 API 回调地域(Callback Hell) 回调地域 既 一个异步请求需要另一个异步请求结果 $.ajax({url, success: function () { ... }}) $.ajax({url, success: function () { ... }}) $.ajax({url, success: function () { ... }}) $.ajax({url, success: function () { ... }}) 由于 Javascript 是单线程的,所以这里执行顺序是 ajax1 -> ajax2 -> ajax3 -> ajax4 但是又由于这四个是异步操作,所以这种多线程操作会导致执行顺序不固定 为了保障异步函数的执行顺序,可以通过异步套异步的方式解决 $.ajax({url, success: function () { $.ajax({url, success: function () { $.ajax({url, success: function () { $.ajax({url, success: