ES的概述

news2024/11/20 14:18:39

一、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.coloradmin.cn/o/491790.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Three.js--》模型材质与纹理的使用

目录 初识材质与纹理 修改模型材质颜色 模型添加纹理 纹理常用属性使用 纹理显示算法 设置粗糙度 纹理加载进度情况 设置环境贴图 初识材质与纹理 three.js中的材质就是几何体表面的材料。所有材质均继承自Material。ThreeJS的材质分为&#xff1a;基础材质、深度材质…

Linux(centos 7) 环境安装MySQL5.7

mysql安装包 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;b8w4 环境准备 安装好的centos 7系统 root 用户登录Linux 在根目录下创建/soft目录 上传mysql安装包到/soft目录&#xff0c;结果如下 准备完毕 安装 根据现有序号挨个安装 rpm 包&#xff0c;依…

“聪明车”接驳“智慧路”—— 智能网联车驶上新赛道

去年底&#xff0c;智己L7首批200台Beta体验版下线交付。 智能网联车&#xff0c;“新赛道”上疾驶着“新终端”。“聪明车”如何更好接驳“智慧路”&#xff1f;全国两会现场&#xff0c;不少代表委员聚焦于这一话题展开热议&#xff0c;出谋划策。 “只有把‘终端’牢牢掌握在…

06 - 2 分层架构模式(Layered Arch)

层 层的定义 层&#xff1a;软件的逻辑单元每一层都有特定的功能组件被分配到不同的层 何谓分层 将系统按照职责拆分和组织上层依赖于直接下层 下层不可以依赖于上层不可以跃层访问&#xff08;理想状况&#xff09; 经典分层架构 OSI 7 层架构 CS 两层架构Client&…

生动形象的傅里叶变换解析!

使用联想链条和几何直观&#xff0c;辅以从实际需求衍生概念的思考模式&#xff0c;详解什么是傅立叶变换&#xff0c;为什么要做傅立叶变换等&#xff0c;帮助记忆和理解&#xff0c;目的当然是标题所说&#xff1a;让你永远忘不了傅里叶变换这个公式。另&#xff0c;这篇博客…

MySQL之Server层的内存结构

前言 本文已收录在MySQL性能优化原理实战专栏&#xff0c;点击此处浏览更多优质内容。 前面的文章我们介绍了InnoDB存储引擎的一些内存、内存磁盘的结构以及工作原理&#xff0c;今天我们就来看一下关于MySQL Server层的一些内存结构。 目录 一、Binlog Cache1.1 Binlog Cache工…

jvm之远程调试

写在前面 工作中&#xff0c;有时会出现测试环境有问题&#xff0c;本地却正常的情况&#xff0c;此时我们就可以通过JVM提供的远程调用的功能&#xff0c;实现在本地debug调试测试环境代码。 1&#xff1a;例子1直接运行class 首先我们来定义类&#xff1a; package com.f…

Blender 形变类修改器:曲线

目录 形变类修改器1. 测试一&#xff1a;减少环切数量1.1 调整物体原点1.2 让两个物体原点重合1.3 添加曲线修改器1.4 融并边 2. 测试二&#xff1a;曲线的方向2.1 查看曲线的方向&#xff08;曲线法向显示&#xff09;2.2 在3D空间调整曲线 3. 测试三&#xff1a;空间位置的影…

【Minecraft开服教学】使用 MCSM 面板一键搭建我的世界服务器 并使用内网穿透公网远程联机

文章目录 前言1.Mcsmanager安装2.创建Minecraft服务器3.本地测试联机4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射内网端口 5.远程联机测试6. 配置固定远程联机端口地址6.1 保留一个固定TCP地址6.2 配置固定TCP地址 7. 使用固定公网地址远程联机 转载自远程穿透文章&…

C语言中链表经典面试题目

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C &#x1f525;座右铭&#xff1a;“不要等到什么都没有了&#xff0c;才下…

MySQL之Change Buffer详解

前言 本文已收录在MySQL性能优化原理实战专栏&#xff0c;点击此处浏览更多优质内容。 上一篇文章一文带你了解MySQL数据库InnoDB_Buffer_Pool&#xff08;点击跳转&#xff09;我们学习了InnoDB Buffer Pool的工作原理&#xff0c;其作用是减少MySQL读取数据时直接与磁盘打交道…

百趣代谢组学党参远志散对记忆障碍大鼠学习能力和肠道菌群的影响

文章标题&#xff1a;Effects of Dangshen Yuanzhi Powder on learning ability and gut microflora in rats with memory disorde 发表期刊&#xff1a;Journal of Ethnopharmacology 影响因子&#xff1a;5.195 作者单位&#xff1a;山西中医药大学 百趣提供服务&#xf…

什么是元宇宙数字展厅?元宇宙前景如何 ?

元宇宙是一个近年来备受关注的概念&#xff0c;它被认为是未来数字世界的新形态。元宇宙是一个虚拟的、数字化的世界&#xff0c;它可以模拟现实世界的各种物理、社会和经济系统&#xff0c;同时也可以融合人工智能、虚拟现实等前沿技术&#xff0c;为用户提供更加丰富、多样化…

钴基双金属氧化物储能材料的高效制备和电化学应用

一、引言 钴金属氧化物作为一类典型的储能材料&#xff0c;既可以用于锂离子电池负极材料&#xff0c;又可以用于超级电容器电极材料&#xff0c;因而备受关注 。在作为锂离子电池负极材料时&#xff0c;具有较高的理论比容量&#xff0c;但充放电体积变化较大、材料导电性较差…

十、MyBatis的缓存

文章目录 十、MyBatis的缓存10.1 MyBatis的一级缓存场景1&#xff1a;判断同一个sqlSession是否查询1级缓存&#xff0c;答案&#xff1a;会查询1级缓存场景2&#xff1a;判断不同sqlSession是否查询1级缓存&#xff0c;答案&#xff1a;不会查询1级缓存场景3&#xff1a;判断相…

企业服务管理(ESM)工具

什么是企业服务管理 企业服务管理 (ESM) 是 IT 服务管理(ITSM)原则的延伸&#xff0c;旨在为人力资源 (HR)、法律、设施、营销和财务等业务团队提供更好的服务。ITSM 是 IT 团队管理向客户提供端到端 IT 服务的方式。ESM 的一个例子是建立一个可供整个组织所有团队使用的服务台…

LED显示屏周边设备

LED显示屏市场也呈多元化发展&#xff0c;异型屏、灯条屏、透明屏、小间距等应用新产品的出现无疑不是一种技术创新。以上创新技术的应用&#xff0c;对LED显示屏周边设备生产企业也提出了更高要求。因此&#xff0c;周边设备对推动整个LED显示屏的产业发展起着举足轻重、不可或…

【Linux-进程通信1】管道

&#x1f308;进程间通信介绍 &#x1f344;进程间通信目的 在操作系统中&#xff0c;每个进程都是独立运行的&#xff0c;它们有自己的地址空间和资源&#xff0c;它们不能直接访问其他进程的资源。然而&#xff0c;在现代计算机系统中&#xff0c;很少有一个进程能够独立完成…

yolov5读取单通道图像会怎样?

通过上图打印可知输入是固定3通道&#xff0c;那么意味着在读取图像中会对图像进行处理。 opencv在默认情况下会读取3个通道的图像&#xff0c;如果是灰度图会将图层复制三次(BGR缺省&#xff0c;BGR)&#xff0c;因此读出来的图片是三通道。

xcode打包导出ipa

转载&#xff1a;xcode打包导出ipa 众所周知&#xff0c;在开发苹果应用时需要使用签名&#xff08;证书&#xff09;才能进行打包安装苹果IPA&#xff0c;作为刚接触ios开发的同学&#xff0c;只是学习ios app开发内测&#xff0c;并没有上架appstore需求&#xff0c;对于苹果…