声明变量     

let

不能重复声明

块级作用域

可修改let变量的值

const

不能重复声明

块级作用域

不能修改const 变量的值

2. 箭头函数

而箭头函数的this指向函数定义时所在的对象

3. 解构赋值

允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。比如:

let [a, b, c] = [1, 2, 3] // a=1, b=2, c=3
let [d, [e], f] = [1, [2], 3] // 嵌套数组解构 d=1, e=2, f=3
let [g, ...h] = [1, 2, 3] // 数组拆分 g=1, h=[2, 3]
let [i,,j] = [1, 2, 3] // 不连续解构 i=1, j=3
let [k,l] = [1, 2, 3] // 不完全解构 k=1, l=2

对象解构

let {a, b} = {a: 'aaaa', b: 'bbbb'} // a='aaaa' b='bbbb'
let obj = {d: 'aaaa', e: {f: 'bbbb'}}
let {d, e:{f}} = obj // 嵌套解构 d='aaaa' f='bbbb'
let g;
(g = {g: 'aaaa'}) // 以声明变量解构 g='aaaa'
let [h, i, j, k] = 'nice' // 字符串解构 h='n' i='i' j='c' k='e' 

变量赋值

const {userName11111, passwordqq} = {userName11111: 'aaaa', passwordqq: 123456}
console.log(userName11111)
console.log(passwordqq)
const [userName1, password1] = ['aaaaxxx', 12345611]
console.log(userName1)
console.log(password1)

5. 数组

s6对数组扩展了4个方法:map、reduce、filter、forEach。

map:原来数组有多少个,map 处理之后还是那么多个。参数:item,index,array

        let arr = [12, 35, 56, 79, 56];
        let arr1 = arr.map(item => item % 2 === 0 ? '偶' : '奇');
        let arr2 = arr.map((item, index) => index + ':' + item);
        console.log(arr);  // [ 12,     35,      56,    79,     56     ]
        console.log(arr1); // [ '偶',   '奇',    '偶',   '奇',   '偶'    ]
        console.log(arr2); // [ '0:12', '1:35', '2:56', '3:79', '4:56' ]
filter: 过滤掉不符合条件的。参数:item,index,array
  let arr = [12, 75, 56, 79, 56];
        let arr1 = arr.filter(item => item >= 60);
        console.log(arr);  // [ 12, 75, 56, 79, 56 ]
        console.log(arr1); // [ 75, 79 ]
forEach: 遍历。仅仅只是循环用,无返回值,也不会改变原数组。 参数:item,index,array
reduce: 汇总。下面代码中的 tmp 可以理解为前一个值
    let arr = [12, 35, 56, 79, 56];
        let avg = arr.reduce((tmp, item, index) => {
            tmp += item;
            if (index === arr.length - 1) tmp /= (index + 1);
            return tmp;
        })
        console.log(avg); // 47.6  也就是这五个数的平均值
(...),它可以将一个数组拆分为参数序列,也可以收集剩下的所有的参数或者数组元素 
扩展运算符(…)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中
        
// 将一个数组拆分为参数序列
        let arr = [1, 2]
        function add(a, b) {
            return a + b
        }
        add(...arr)
        console.log(add(...arr)) //3   
// 收集剩下的所有的参数
function f(a, ...arr) {
    console.log(...arr) // 2 3
}
f(1,2,3)

对象的扩展运算符 ...

对象的扩展运算符(...)可以把对象可枚举的属性拆分为键值对序列

用于对象拷贝

        let obj1 = { a: 1, b: 2 }
        let obj2 = { ...obj1 }
        console.log(obj2)   // {a:1,b:2}
用于合并对象
        let obj1 = { a: 1, b: 2 }
        let obj2 = { c: 3, d: 4 }
        let obj3 = { a: 100, ...obj1, ...obj2, e: 5, f: 6 }  // {a: 1, b: 2, c: 3, d: 4, e: 5, f: 6}
        let obj4 = { ...obj1, ...obj2, e: 5, f: 6, a: 100 } // {a: 100, b: 2, c: 3, d: 4, e: 5, f: 6}

(2) Object.assign

Object.assign方法用于对象的合并,将源对象(source)的所有可枚举属性,拷贝(浅拷贝)到目标对象。

如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性。

        const target = { a: 1 };
const source1 = {a: 100, b: 2 };
const source2 = { c: 3 };
Object.assign(target, source1, source2);
target // {a:100, b:2, c:3}

面向对象

ES6出来之后,官方提供了面向对象的写法。看代码吧

       class Person {
            constructor(name, age, address) {
                this.name = name;
                this.age = age;
                this.address = address;
            }
            introduce() {
                console.log(`大家好,我叫${this.name},今年${this.age}岁,家在${this.address}`);
            }
        }
        class Student extends Person {
            constructor(name, age, address, major) {
                super(name, age, address);
                this.major = major;
            }
            introduce() {
                console.log(`大家好,我叫${this.name},今年${this.age}岁,家在${this.address}, 专业是${this.major}`);
            }
        }
        let person = new Person('ethan', 24, '包邮区');
        person.introduce();  // 大家好,我叫ethan,今年24岁,家在包邮区
        let student = new Student('zyc', 18, '南京', '车辆工程');
        student.introduce(); // 大家好,我叫zyc,今年18岁,家在南京, 专业是车辆工程
 
  上面定义了一个 Person 类,又定义了一个继承 Person 类的 Student 类,很明显方便了很多。
 

Promise      主要是用来解决异步操作。

  • 同步:串行 简单,方便
  • 异步:并行 性能高,体验好
 这是 promise 的基本用法  

        let p = new Promise((resolve, reject) => {
            $.ajax({
                url: '1.txt',
                dataType: 'json',
                success(json) {
                    resolve(json);
                },
                error(err) {
                    reject(err);
                }
            })
        });
        p.then(json => {
            console.log('成功', json);
        }, err => {
            console.log('获取失败');
        })
 

ES6知识点总结的更多相关文章

  1. ES2015也就是ES6知识点持续更新

    ES6,全名:ECMAScript2015,先扯点其他的,ECMA是一个国际标准化组织,它最重要最重要的作用就是让ECMAScript这门语言标准化,什么意思呢?我们知道,js这门脚本语言是运行在浏览 ...

  2. ES6知识点大汇总

    1 //1.搭建ES6的开发环境: 2 let a=1; 3 console.log(a); 4 //2.var 声明的是全局变量 全局变量会污染外部的区块 5 //let 局部变量 6 //cons ...

  3. 前端读者 | ES6知识点概述

    本文来自 @羯瑞 整理 ES6,并不是一个新鲜的东西,ES7.ES8已经赶脚了.但是,东西不在于新,而在于总结. 变量的新定义 let 和 const 在ES6没有被普及时,我们会用的变量定义的方法是 ...

  4. ES6知识点汇总

    MDN镇楼: https://developer.mozilla.org/zh-CN/ 1.ES6新添加数据类型:symbol  -----------   https://developer.moz ...

  5. 【前端开发】ES6知识点系统化梳理笔记

    >ES6扩展: #Map和Set是es6标准新增的数据类型 ##Map是key-value(关键字-值),Map允许修改value,不允许修改key,Map支持下标操作 var m = new ...

  6. es6 知识点总结(模块化 异步)

    问题: 什么是单线程和异步有什么关系? 什么是 event-loop 是否用过 jquery的deferred promise的基本使用和原理 介绍一下 async/await(和Promise 的区 ...

  7. es6知识点

    扩展运算符(三个点): 将值转换为参数序列. 解构赋值:比如:var [a,b,c]=[1,2,3];

  8. ES6知识点脑图

    点击左键 => 拖拽图片 => 新标签页查看图片 => 放大拖拽查阅

  9. Vue01 vue基础、mvvm、ES6z知识点、计算属性、生命周期

    Vue案例: <body> <div id="app"> <!--第一部分--> <fieldset> <legend> ...

  10. ES6全面讲解

    写在之前.讲解了比较常用的ES6知识点,可以快速的入门.有两个比较复杂的知识点(promise,generator)则是留在了其他文章中,在里面详细讲解. 介绍 1.历史 ​ 1.ECMAScript ...

随机推荐

  1. Python基于粒子群优化的投资组合优化研究|附代码数据

    全文链接:http://tecdat.cn/?p=6811 最近我们被客户要求撰写关于粒子群优化的研究报告,包括一些图形和统计输出. 我今年的研究课题是使用粒子群优化(PSO)的货币进位交易组合优化. ...

  2. 混淆css类名

    使用vite:

  3. C语言中的转义字符\b的含义

    \b的含义是,将光标从当前位置向前(左)移动一个字符(遇到\n或\r则停止移动),并从此位置开始输出后面的字符(空字符\0和换行符\n除外) 参考: https://blog.csdn.net/har ...

  4. AES可以加密成

    AES可以生成HEX的字符串如{[m9LJfF4fYtt+PGoAA5WmL+6RFh5oVvrlCQpVhLyk3l28XqS3D4Qd+ehOdvqLcUrFKcyBV3hygXHU3We33bY ...

  5. Django设计模式(MVC/MVT)

    Django设计模式(MVC/MVT) 目的:了解什么是MVC,MVT 思考:为什么要用设计模式 分工.解耦,让不同的代码块之间降低耦合,增强代码的可扩展性和可移植性,实现向后兼容. MVC: M全拼 ...

  6. vue 切换json语言包

    1.在asstes文件夹新建 2.在main.js读取本地json语言包 3.在vue页面t这样引用

  7. ORACLE查看会话的大小及终止会话

    一.出现PGA不足时,我们可以查看用户会话大小,结束相应会话 方法一 Select Server, Osuser, Name, Value / 1024 / 1024 Mb, s.Sql_Id, Sp ...

  8. ApacheBench(压力测试)

    1.post请求 (post.txt body信息) ab -c2000 -n50 -p post.txt -T "application/json"  url 2.get 请求 ...

  9. pandas常用方法之read_excel详解

    前期准备 准备测试数据如下: fl_path = r"C:\Users\Desktop\test.xlsx" dic = { 'num': ['001', '002', '003' ...

  10. js实现不同的域名 输出不同的结果

    js实现域名判断后跳转到指定网址,也适用于同一虚拟空间放多个网站: <script> try { if(self.location == "http://apple.baidu. ...