美文网首页工作生活
ES6学习笔记(一)

ES6学习笔记(一)

作者: 彼得朱 | 来源:发表于2019-07-01 17:18 被阅读0次
3.png

一、环境

webpack3.x

二、let、const

1、let

概念:ES6之前,只有两种类型的作用域:全局作用域和函数作用域,但是某些场景需要变量在某个区域使用,所以有了let出现。

不支持let的:IE11或更早的版本

var和let的区别:

(1)块作用域

通过 var 关键词声明的变量没有块作用域。通过let 的有。

(2)重新声明

在相同作用域下let 不可以重新声明,但是处于块内块外let 可以使用同一个变量进行声明,var可以,但是会影响

(3)Windows对象

HTML中,通过 var 关键词定义的全局变量属于 window 对象,
但是通过let 的不是

2、const

不支持const的:IE10或更早版本

注意事项:

(1)JavaScript const必须在声明的时候就赋值,且不能重新赋值;

(2)const常量不允许重新赋值,但是常量对象、常量数组可以更改其属性

(3)不许常量数组更改的话,可以用freeze

eg:
const  arr = Object.freeze([‘apple’,‘banana’]);    //这样设置不能修改
arr.push(‘orange’)    //这是错的,不能修改,因为使用了freeze

注意:不允许将已有的 var 或 let 变量重新声明或重新赋值给 const

三、解构赋值

概念:按照一定的模式,从数组和对象提取值,对变量进行赋值(这个功能非常有用,特别是在做数据交互,使用ajax的时候)

举例:

let  [a,b,c] = [12,5,6]     //三个一一对应
let  [a,b,c]  = [12,[5,6]]  //a 是5,b是 [5,6],c是undefined
//对象解构:

​        //第一种
​        let json = {
​            name: 'strive',
​            age: 18,
​            job: '前端'
​        }; //先写一个对象
​        let {
​            name,
​            age,
​            job
​        } = json; //让这几个变量指向对象
​        console.log(name, age, job); //这时可以输出它

​        //第二种
​        let {
​            name,
​            age = 'jiashe',
​            job:a
​        } = { //这里的jiashe是默认值,a是别名
​            name: 'strive',
​            age: 18,
​            job: '前端'
​        }
​        console.log(name, age, a);
//交换两数位置
​        let a = 5;
​        let b = 4;
​        console.log(a,b);
​        [a,b] = [b,a];
​        console.log(a,b);

注意:解构赋值中,:后面是别名,=后面是默认值;

​ 解构的时候可以给默认值;

​ 函数也可以给默认值;

function show({a='默认1',b='默认'}){
​            console.log(a,b);   
​        }
​        show({});

四、字符串模板

优点:可以随意地换行

字符串拼接:let str = 名字是 ${name},年龄是 ${age} (注意是反单引号)
字符串查找:str.includes(要找的东西) 返回true/false
字符串是否以谁开头:str.startsWith(检测东西)
字符串以谁结尾:str.endsWith(检测东西)
重复字符串:str.repeat(2)
填充字符串:str.padStart(填充完后整个字符串长度,填充东西) 往前填充
str.padEnd(填充完后整个字符串长度,填充东西)往后填充但是这样做需要数个数,这时直接用.length计算出填充长度和原长度,相加就好

五、函数变化

1、函数默认参数

在形参那加 '=默认值' 就可以了

function show({x=0,y=0}={}){
​                console.log(x,y);
​            }
​        show();

2、函数默认参数已经定义了,不能再使用let、const声明

function show(a = 18) {
​            let a = 10; //错误
​            console.log(a);
​        }
​        show(); //这是错误的

3、扩展运算符:reset运算符 (作用:扩展、剩余)

展开数组:
... :
[1,2,3,4] -> ...[1,2,3,4] ->1,2,3,4
... :
1,2,3,4 -> ...1,2,3,4 -> [1,2,3,4] (传参数列表那,可以传成数组)

注意:剩余参数:必须放到参数末尾

//eg1:
​        let arr = ['apple', 'banana'];
​        console.log(arr);
​        console.log(...arr);
//eg2:  
//以前的:
function show() {
​            let a = Array.prototype.slice.call(arguments);
​            return a.sort();
​        }
​        console.log(show(1, 9, 8, 3, 2));
//现在的:
function show(...a) {
            return a.sort();
        }
        console.log(show(1, 9, 8, 3, 2));
//注意:要使数组按照大小进行排序,需要使用一个排序函数,即Array.sort(排序函数)
//改进后的:
 function sort1(a, b) {
            return a - b;
        }

        function show(...a) {
            return a.sort(sort1);
        }
        console.log(show(1, 10, 8, 3, 2));
//eg3: 
function show(a, b, c) {
​            console.log(a, b, c);
​        }
​        show(...[1, 9, 8]);
//eg4:
function show(a,b,...c){
            console.log(a,b,c);
        }
        show(1,2,3,4,5,6);
//eg5:将数据进行映射,不改变原数据,常用于接收服务器数据但是不能改变原数据的情况
//用引用会改变原数据
let arr = [1, 2, 3, 4, 5];
let arr2 = [...arr];
let arr3 = Array.from(arr); //另一种方法
console.log(arr, arr2,arr3);

4、箭头函数

形式: => 箭头左边是参数,右边是返回值

完整箭头函数格式:

()=>{
语句
return
};

注意事项:

(1)this问题,定义函数所在的对象,指向的是定义时函数所在对象,而不是运行所在的对象

let json = {
            id: 1,
            show: function () {
                setTimeout(() => {
                    alert(this.id);
                }, 2000);
            }
        };
        json.show();
输出:弹出1

(2)箭头函数里面没有arguments,用arguments会报错,用'...'(剩余运算符)

let show = (...args) => {
            console.log(args);
        }
        show(1, 2, 3, 4, 5);

(3)箭头函数不能当构造函数,下面是错误的

let show = ()=>{
                    this.name = 'abc';  
                }
                        let s = show();
                        alert(s.name);
//上面这个会报错
//Uncaught TypeError: Cannot read property 'name' of undefined

(4)函数参数最后逗号可以用了

// ES2017   函数参数最后逗号可以有了
                function show(a,b,c,d,){
                        console.log(a,b,c,d);
                }
            show(1,2,3,4,);

相关文章

  • [总结]ES6 Array

    学习es6时做得小笔记

  • spark_learn

    Angular2学习笔记——NgModule es6 新增的map和foreach AngularJS2.0 学习...

  • ES6学习笔记 篇零 变量声明

    本文是一系列就阮一峰大神的《ECMAScript 6 入门》的学习笔记。附上篇一:ES6学习笔记 篇一 赋值(传值...

  • ES6学习笔记 篇一 赋值(传值 引用 解构)

    本文是一系列就阮一峰的《ECMAScript 6 入门》的学习笔记。附上篇零:ES6学习笔记 篇零 变量声明 JS...

  • ES6学习笔记 篇二 字符串的用法与扩展

    本文是一系列就阮一峰的《ECMAScript 6 入门》的学习笔记。篇零:ES6学习笔记 篇零 变量声明篇一:ES...

  • promise

    本文是整理阮一峰大神ES6中 Promise 的学习笔记 目录: Promise.prototype.then()...

  • Ant Design Pro的知识储备

    Less 笔记 Less 官方文档 ReactJs笔记 ReactJs官方文档 ES6笔记 ES6文档 dvaJs...

  • 2.let 和 const 命令

    阮一峰ES6教程学习笔记原文地址 1. let和var let:ES6 新增命令用法类似于var,但是所声明的变量...

  • let 和 const 命令

    ES6学习笔记1、let命令ES6中新增了let,用于声明变量,与var类似,但let声明只是在其block(块)...

  • ES6从入门到...

    项目中基本上用的都是Es6看阮一峰大神的ECMAScript 6 入门整理一些学习笔记 let ES6 新增了le...

网友评论

    本文标题:ES6学习笔记(一)

    本文链接:https://www.haomeiwen.com/subject/wmrncctx.html