简单的ES6新特性_Ariverh的博客-程序员宅基地

技术标签: 前端  es6  javascript  

简单的ES6新特性

  1. 简介

ES6,全称ECMAScript 6.0,是javaScript的下一个版本标准,发布时间为2015年6月。其出现主要解决了javascript中不足的部分,比如javaScript中没有类这个概念,还有变量的常量的定义不清楚等问题。现如今大部分的浏览器都支持ES6的部分特性。如果你作为一个前端开发者,学习和使用ES6是必要的。

发展历史

javaScript的创造者:网景公司(Netscape)

1997年,js被提交给ECMA标准化组织,称为国际化标准,并命名为ECMAScript。

  • 1997 年 ECMAScript 1.0 诞生。
  • 1998 年 6 月 ECMAScript 2.0 诞生,包含一些小的更改,用于同步独立的 ISO 国际标准。
  • 1999 年 12 月 ECMAScript 3.0诞生,它是一个巨大的成功,在业界得到了广泛的支持,它奠定了 JS 的基本语法,被其后版本完全继承。直到今天,我们一开始学习 JS ,其实就是在学 3.0 版的语法。
  • 2000 年的 ECMAScript 4.0 是当下 ES6 的前身,但由于这个版本太过激烈,对 ES 3 做了彻底升级,所以暂时被"和谐"了。
  • 2009 年 12 月,ECMAScript 5.0 版正式发布。ECMA 专家组预计 ECMAScript 的第五个版本会在 2013 年中期到 2018 年作为主流的开发标准。2011年6月,ES 5.1 版发布,并且成为 ISO 国际标准。
  • 2013 年,ES6 草案冻结,不再添加新的功能,新的功能将被放到 ES7 中;2015年6月, ES6 正式通过,成为国际标准。
  1. let和const

在es5中,我们我们对常量和变量的声明都是用var关键字

在es6中

  • 变量声明关键字:let
  • 常量声明关键字:const

let,const和var的区别

let:

  • 用于声明变量,声明的变量只在代码块内有效

    {
          
      let a = 0;
    }
    a   // 报错 ReferenceError: a is not defined
    
  • 在for,当计数器是变量只在for中有效。(适合声明计数器)

  • 不能重复声明变量

    let a = 1;
    let a = 2;
    a  // Identifier 'a' has already been declared
    
  • 不存在变量提升

    console.log(a);  //ReferenceError: a is not defined
    let a = "apple";
    

const:

  • 用于声明变量,声明变量之后变量的值不能改变

var:

  • 声明的变量全局有效

    {
          
      var b = 1;
    }
    b  // 1
    
  • 能够重复声明变量

    var b = 3;
    var b = 4;
    b  // 4
    
  • 存在变量提升

    console.log(b);  //undefined
    var b = "banana";
    
  1. 模板字符串
let name = "ariverh";
let age = 22
let info = `my name is ${
      name}, I am ${
      age} years old`
//my name is ariverh,I am 22 years old
  1. 函数的默认参数
  • 使用函数的默认参数时,参数名不能重名

  • 当未传递参数或者参数未undefined,会使用默认参数

    function sum(a=1,b=2){
          
     	return a+b;
    }
    
    sum() //3
    sum(2,2)//4
    sum(4) //6
    
  1. 箭头函数

在javascript中的箭头函数和java中的Lamda表达式有相似之处。

- 正常函数
function sum(a,b){
    
	return a+b;
}
var sum = function(a,b){
    
	return a+b;
}

- 箭头函数 多参数多循环体
var sum1 = (a,b) =>{
    
	var c = a+b;
	console.log(c);
	return c;
};

- 箭头函数 单参数多循环体
var sum2 = a =>{
    
	a = a+1;
	console.log(a);
	return a;
};

- 箭头函数 单参数单循环体
var sum3 = a => a+1;

- 箭头函数 多参数单循环体
var sum4 = (a,b)=>a+b;
java
- 箭头函数 无参数 单循环体
var sum5 = ()=>1+2;
  1. 对象的简写
- 传统对象
var name = "ariverh"
var age = 22
var person = {
    
    age: age,
    name: name,
    say: ()=> console.log(`my name is ${
      name},I am ${
      age} years old`) //学以致用
}

- es6 对象简写    在对象简写中不能使用箭头函数 
var name = "ariverh"
var age = 22
var person1 = {
    
    age,
    name,
    say(){
    
        console.log(`my name is ${
      name},I am ${
      age} years old`) 
    }
}

传统对象:

在这里插入图片描述

es6对象:

在这里插入图片描述

  1. 对象解构
let person1 = {
    
    age: 22,
    name: "ariverh",
    say(){
    
        console.log(`my name is ${
      name},I am ${
      age} years old`)
    }  //学以致用
};
let {
    age,name,say} = person1;
console.log(age);
say();
  1. 对象传播操作符
let person1 = {
    
    age: 22,
    name: "ariverh",
    say(){
    
        console.log(`my name is ${
      name},I am ${
      this.age} years old`)
    }  //学以致用
};
let {
    age,...person2} = person1;
console.log(age);
console.log(person2);
  1. 数组map
let persons =[{
    age:22,name:"tom"},{
    age:21,name:"jeny"},{
    age:10,name:"jack"}];
let persons1 = persons.map(function(ele){
    
    ele.age = ele.age +1;
    return ele;
});

console.log(persons1);
//[
//  { age: 23, name: 'tom' }, 
//  { age: 22, name: 'jeny' },
//  { age: 11, name: 'jack' } 
//]
  1. 数组reduce
let arr = [1,2,3,4,5,6,7,8,9,10]
let result = arr.reduce(function(a,b){
    
	return a+b;
});
console.log(result);
//55

-过程:
a = 1, b = 2 ,[3,3,4,5,6,7,8,9,10]
a = 3, b = 3 ,[6,4,5,6,7,8,9,10]
....
result = 55
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_47063773/article/details/113825660

智能推荐

MFC log4cplus日志库的简单例子_Genven_Liang的博客-程序员宅基地

MFC log4cplus日志库的简单使用例子一、简述 记--log4cplus日志库的简单使用例子,使用log4cplusX.dll和log4cplusX.lib 例子打包:二、获取源码源码下载 https://sourceforge.net/projects/log4cplus/files/log4cplus-stable/例子中下载的是2.0.2,请自行根据需要选择,请留意自己安装的Visual Studi..._mfc log4

高中计算机一级基础知识,2017全国计算机一级MS Office考证常考知识点-高中课件精选.doc...-程序员宅基地

2017全国计算机一级MS Office考证常考知识点-高中课件精选.doc高考高中教育2017年计算机一级考试MSOffice高频考点(1)计算机的发展、类型及其应用领域1. 计算机(computer)是一种能自动、高速进行大量算术运算和逻辑运算的电子设备。 其特点为:速度快、精度高、存储容量大、通用性强、具有逻辑判断和自动控制能力。2. 第一台计算机:ENIAC,美国,1946年 宾夕法尼亚大..._高中office基础知识

(转贴)中国经济:转变和对策-程序员宅基地

转自中国经济:转变和对策谢国忠的最新文章,写得太好了!标题尤其好,《政府要做的,就是少从家庭部门刮钱》!我越读越激动,忍不住要长篇转载他的言论。==============================================一、什么是中国发展模式?中国发展模式的核心,就是拉动固定资产投资,短期内对GDP产生巨大的影响。当投...

华为S5700系列交换机AR配置静态IP双链路负载分担-程序员宅基地

适用于:有多个以太WAN口的机型。业务需求:运营商1分配的接口IP为100.100.1.2,子网掩码为255.255.255.252,网关IP为100.100.1.1。运营商2分配的接口IP为200.200.1.2,子网掩码为255.255.255.248,网关IP为200.200.1.1。实现通过静态IP双上行接入Internet,链路1和链路2的出口路由采用等价默认路由进行负载...

华为笔试2019年8月28日_华为8月12日笔试-程序员宅基地

编程第二题赋值符号写成等号害一生!#include<iostream>#include<algorithm>#include<string>#include<vector>#include<cmath>#include<unordered_map>using namespace std;unordered_m..._华为8月12日笔试

nginx如何设置访问跳转到一个固定页面-程序员宅基地

方法一server{ listen 80 ; server_name www.xxx.com xxx.com; index test.html index.html index.htm index.php; #直接放置index下 root /path/to/;}方法二server{ listen 80 ;..._nginx转发到某个页面

随便推点

无根树变为有根树_无根树转化为有根树-程序员宅基地

【无根树】即无环连通无向图;若一个图中每条边都是无方向的,则称为无向图。无根树它要求每个顶点之间都直接或间接相连,且图中无环,即只有简单路径。由于树是图的子集,这一类图具有树的特征,但不具有树状的形式,没有特定的根节点,故称为无根树。任意选取图中某个点为根,均可将无根树转化为有根树。【代码】#include&lt;bits/stdc++.h&gt;using names..._无根树转化为有根树

其实我们都在一个世界...20120419 【小李木耳】-程序员宅基地

其实我们都在一个世界......20120419【小李木耳】 进入种植季,碧水蓝天,下月,鸟语花香,除了生意,他将有许多需要找寻的东东,电话啊、电脑啊、电视啊、除了电灯,其它请都离他远一点吧!他已经错过了好多,就让他慢慢找回来吧。咸菜、粥、馒头的早餐或叫第一餐,挺好;60°的烧酒、6个鸡蛋+3颗大葱、水库的开春鱼、油盐酱醋,两三个人,奢侈啊!林区改造些许有点人为主动改造旧世界的_小李木耳

深度学习应用例子--用线性回归预测波士顿房价的步骤-程序员宅基地

资料来源:百度技术学院视频:http://bit.baidu.com/course/detail/id/137/column/117.html声明:博主只是将资料中的视频整理为图片,在某些地方稍作编辑,为了方便查阅而已。本文绝大部分的智力产出都来源于视频资料。推荐看视频资料以获得更多内容。一、数据预处理二、假设函数三、损失函数四、梯度...

深入理解 relocating 对Elasticsearch集群的影响_es relocating-程序员宅基地

rebalance 用于将集群中的分片进行均衡,保持各个节点的分片数量大致相等,当集群扩容或缩容,掉一个节点的时候,这过程会自动完成。直观的感觉他应该是在后台默默干活的过程,最多占用带宽和磁盘 io 资源,应该感受不到他的存在,但实际情况是,他可能引起一些意想不到的问题。这篇文章主要思考分片 relocating 对集群会有哪些影响(基于 v7.7),有下面几个。shard-started RPC 会抢占较多的 master 处理时间分片移动结束后,target 节点会向 master 发起一个 sh_es relocating

ts上传文件_ts 上传文件_木木木和小琳琳的博客-程序员宅基地

分别表示允许上传的文件类型。_ts 上传文件

<stm32>用systick计数器做delay函数易出现的错误一则_stm32 delayms函数无效-程序员宅基地

用systick计数器做delay函数易出现的错误一则 今天在调试程序过程中,发现以前用的好好的delay函数突然不准了,一开始怎么也没有怀疑到delay函数的问题,先贴代码://主函数里用到了delay函数void main(){ if(flag==1) { Delay_Ms(1000); flag=0; _stm32 delayms函数无效