ES的概述

news/2024/11/15 8:34:45/

一、ECMASript 相关介绍

1.1什么是 ECMA

ECMA European Computer Manufacturers Association )中文名称为欧洲计算机制
造商协会,这个组织的目标是评估、开发和认可电信和计算机标准。 1994 年后该
组织改名为 Ecma 国际。

1.2.什么是 ECMAScript

ECMAScript 是由 Ecma 国际通过 ECMA-262 标准化的脚本程序设计语言

1.3.什么是 ECMA-262 

Ecma 国际制定了许多标准,而 ECMA-262 只是其中的一个,所有标准列表查看
http://www.ecma-international.org/publications/standards/Standard.htm

1.4.ECMA-262 历史  

ECMA-262 ECMAScript )历史版本查看网址
http://www.ecma-international.org/publications/standards/Ecma-262-arch.htm
1
1997
制定了语言的基本语法
2
1998
较小改动
3
1999
引入正则、异常处理、格
式化输出等。 IE 开始支持
4
2007
过于激进,未发布
5
2009
引入严格模式、 JSON ,扩
展对象、数组、原型、字
符串、日期方法
6
2015
模块化、面向对象语法、
Promise 、箭头函数、 let
const 、数组解构赋值等等
7
2016
幂运算符、数组扩展、
Async/await 关键字
8
2017
Async/await 、字符串扩展
9
2018
对象解构赋值、正则扩展
10
2019
扩展对象、数组方法
ES.next
动态指向下一个版本

1.5.谁在维护 ECMA-262 

TC39 Technical Committee 39 )是推进 ECMAScript 发展的委员会。其会员都是
公司(其中主要是浏览器厂商,有苹果、谷歌、微软、因特尔等)。 TC39 定期
召开会议,会议由会员公司的代表与特邀专家出席

1.6.为什么要学习 ES6

ES6 的版本变动内容最多,具有里程碑意义
ES6 加入许多新的语法特性,编程实现更简单、高效
ES6 是前端发展趋势,就业必备技能

1.7.ES6 兼容性 

http://kangax.github.io/compat-table/es6/ 可查看兼容性

Babel 转码器

Babel 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在老版本的浏览器执行。这意味着,你可以用 ES6 的方式编写程序,又不用担心现有环境是否支持。下面是一个例子。

 2 ECMASript 6 新特性

2.1.let 关键字

let 关键字用来声明变量,使用 let 声明的变量有几个特点:
1) 不允许重复声明   声明两个一样名称的变量会报错。
2) 块儿级作用域      下面console.log(girl),会找不见girl报错

3) 不存在变量提升    在song定义之前输出,会报错,但如果用var声名song,不会报错,会提示undefined

4) 不影响作用域链  

应用场景:以后声明变量使用 let 就对了

2.2 const常量

1.一定要赋初始值(不然报错)

2.一般常量使用大写(潜规则)

3.常量值不能修改

4.也块级作用域,在块外面引用,引用不到

5.对于数组和对象的元素修改,不算做对常量的修改,不会报错。

2.3 解构赋值

// 1.数组的解构const F4 = ['小沈阳','刘能','谢广坤','赵四'];let [xiao,liu,xie,zhao] = F4;// console.log(xiao);// console.log(liu);// console.log(xie);// console.log(zhao);
 //2.对象的解构const benshan = {name:"赵本山",age:"不详",xiaopin:function(){console.log("我可以演小品");}}// let {name,age,xiaopin} = benshan;// console.log(name);// console.log(age);// console.log(xiaopin);// xiaopin();let {xiaopin}=benshan;xiaopin();

 2.4模板字符串

ES6引入新的声明字符串的方式 `` -->反引号,ES5是单引号和双引号

     1.声明   typeof 可以输出字符串类型,下面为string类型。

     let str = `我也是一个字符串哦`;console.log(str,typeof str);

   2.内容可以直接出现换行符 

以前这么写就报错了,换行必须拼接

   let str = `<ul><li>秀秀</li><li>秀秀一号</li><li>秀秀二号</li></ul>`;

 //3.变量拼接

默认可以用${}形式拼接变量。

    let love = '秀秀';  let out =  `${love}是大美女`;console.log(out);

2.5 简化对象的写法

ES6 允许在大括号里面,直接写入变量和函数,作为对象的属性和方法这样书写更加简洁

<script>let name =  `秀秀`;
let change = function(){console.log('秀秀一号');
}
//以前的写法
const school = {name:'张三',change:'李四',improve:function(){console.log('秀秀二号');}
}
//现在的写法
const school1= {name,change,improve1(){console.log("秀秀二号");}
}
console.log(school);</script>

2.6箭头函数

  //ES6允许使用箭头 (=>) 定义函数//以前声明一个函数let fn = function(){}//现在声明一个函数let  fn1 = (a,b) =>{return a+b;}//调用函数//    console.log (fn1(1,2));

this是静态的,this始终指向函数声明时所在的作用域下的this值 

function getName(){console.log(this.name);}let getName1 = () =>{console.log(this.name);}//设置windows对象的name属性window.name = '秀秀三号';const school = {name:"秀秀四号"}//call 方法调用,call方法会改变this指向getName.call(school);getName1.call(school);

上述代码输出秀秀四号,秀秀三号,说明this函数是静态的,没有收到call方法的改变。 

 不能作为构造实例化对象  下面写报错。

//2.不能作为构造实例化对象  下面写报错。let Person = (name,age) => {this.name = name;this.age = age;}let me = new Person('张三','20');console.log(me);

不能使用arguments变量 

     let fn2 = () =>{console.log(arguments);}fn2(1,2,3);

箭头函数的简写

 //1) 省略小括号,当形参有且只有一个的时候let add = n =>{return n+n;}//2) 省略花括号,当代码只有一条语句的时候,此时return必须省略//而且语句的执行结果就是函数的返回值let pow  = (n) =>n*n;console.log(pow(4));

2.7 箭头函数的应用场景

需求 点击div 2s后颜色变成粉色

之前的写法

  let ad = document.getElementById("ad");//绑定事件ad.addEventListener("click",function(){//保存this的值 let _this = this;//定时器setTimeout(function(){//修改背景颜色this,这里的this指向window,所以提前保存this。_this.style.background = 'pink';},2000)});

箭头函数写法

  let ad = document.getElementById("ad");//绑定事件ad.addEventListener("click",function(){//保存this的值 //定时器setTimeout(()=>{//修改背景颜色this,这里的this指向window,所以提前保存this。this.style.background = 'pink';},2000)});

需求2  从数组中返回偶数的元素

之前的写法

const arr = [1,4,6,9,11,22,28];const result = arr.filter(function(item){if(item % 2 ===0){return true;}else{return false;}})console.log(result);

箭头函数的写法

const result = arr.filter(item => item % 2 ===0);console.log(result);

箭头函数适合与tihs无关的回调,定时器,数组的方法回调

箭头函数不适合与this有关的回调,事件回调,对象的方法。

2.8 ES6允许给函数参数赋初始值

function add(a,b,c=10){return a+b+c;
}let result = add(1,2);console.log(result);

2.9 rest参数 

ES6引入了rest参数,用于获取函数的实参,用来代替arguments

//ES5 获取是参数的方式function date(){console.log(arguments);}date('迪丽热巴','古力娜扎','马儿咋哈');

 rest形式

rest形式以数组形式呈现,而argument以对象的形式呈现

function date(...args){console.log(args);}date("岳云鹏","孙悦","刘谦");

 rest的形式参数必须放到最后。

function fn (a,b,...args){console.log(a);console.log(b);console.log(args);
}fn(1,2,3,4,5,6,7);

2.10 拓展运算符 


http://www.ppmy.cn/news/62189.html

相关文章

基于Python的PROSAIL模型介绍以及使用

1、介绍 PROSAIL是两种模型耦合得到的。 SAIL是冠层尺度的辐射传输模型&#xff0c;把冠层假设成是连续的且具有给定几何形状和密度的水平均匀分布的介质层&#xff0c;从而模拟入射辐射与均匀介质之间的相互作用&#xff0c;具体还是挺复杂的。而PROSPECT就是叶片尺度的辐射传…

【网络安全】本地提权漏洞分析

0. 前言 CVE-2023-21752 是 2023 年开年微软第一个有 exploit 的漏洞&#xff0c;原本以为有利用代码会很好分析&#xff0c;但是结果花费了很长时间&#xff0c;难点主要了两个&#xff1a;漏洞点定位和漏洞利用代码分析&#xff0c;欢迎指正。 1. 漏洞简介 根据官方信息&a…

可视化绘图技巧100篇高级篇(二)-网络图

目录 前言 知识储备 网络拓扑图 网络和族群结构 基本网络图与相似甘特图的区别

避免使用第三方工具完成电脑环境检测

0. 简介 在之前配置各种深度学习环境的时候经常需要先检测一下电脑的软硬件环境&#xff0c;其实整个过程比较重复和固定&#xff0c;所以我们是否有可能一键检测Python版本、PIP版本、Conda版本、CUDA版本、电脑系统、CPU核数、CPU频率、内存、硬盘等内容这是很多Deepper苦恼…

【python学习】基础篇-文件与系统-文件信息获取与目录操作

python内置文件高级操作函数 删除文件 Python 没有内置删除文件的函数&#xff0c;但是在内置的 os 模块中提供了删除文件的 remove()函数&#xff0c;语法格式如下: os.remove(path) 其中&#xff0c;path 为要删除的文件路径&#xff0c;可以使用相对路径&#xff0c;也可以…

u盘中病毒文件被隐藏怎么恢复?看看这三种方法

U盘是我们日常生活中常用的存储设备&#xff0c;但是如果U盘被病毒感染&#xff0c;可能会导致文件被隐藏或丢失。被病毒隐藏的U盘文件给我们的生活、工作带来了很大的麻烦&#xff0c;因此必须马上采取行动来恢复这些文件。 而解决“u盘文件被病毒隐藏如何恢复正常”的问题原来…

和Ai一起学习CMake(一)

和Ai一起学习CMake 现在人工智能爆火&#xff0c;ChatGPT、new bing等层出不穷。我们借助Ai来学习一下CMake。下面是我与Ai的问答&#xff0c;这个学习主要是通过Ai来学习&#xff0c;但是防止Ai乱说话&#xff0c;我会结合自身的知识和实际操作给出相应的补充。 我的环境如下…

PMP课堂模拟题目及解析(第3期)

21. 一家农业设备制造商因一个缺陷部件而召回数千个产品。这个问题导致许多客户不满&#xff0c;公司花费 500 万美元来修理和更换零件。哪一种成本预算类型可以防止这个问题&#xff1f; A. 非一致性成本 B. 一致性成本 C. 矩阵图 D. 多标准决策分析 22. 一位团队成员…