ES6(一)

一、es6声明变量以及声明特性

1.let

  • 变量不能重复声明
  • 块级作用域
  • 不会挂载在window中
  • 新增块级作用域

2.const

  • 与let一样
  • 一定要赋初始值
  • 常量的值不能修改
  • 对数值和对象的元素修改,不算对常量的修改,不会报错

二、变量的解构赋值

按照一定的模式从数组和对象中提取值,对变量进行赋值。

1.数组的解构

        let arr = ['aaa', 'bbb', 'ccc']
        let [a, b, c] = arr
        console.log(a); //aaa
        console.log(b); //bbb
        console.log(c); //ccc

2.对象的解构

   let obj = {
            name: '张三',
            age: 18,
            say: function() {
                console.log('你好');
            }
        }
        let {
            name,
            age,
            say
        } = obj
        console.log(name); //张三
        console.log(age); //18
        say() //你好

解构赋值等号两边的结构要一致

三、模板字符串

es6引入新的字符串的方式:`str `

        // 1.声明
        let str = `你好!`;
        // 2.内容中可以直接出现换行符
        let htmlStr = `
            <ul>
                <li>111</li>
                <li>222</li>
                <li>333</li>
            </ul>
        `;
        // 3.变量拼接${}
        let obj = {
            name: '张三',
            age: 18,
            sex: '女'
        }
        let str1 = `
            <ul>
                <li>${obj.name}</li>
                <li>${obj.age}</li>
                <li>${obj.sex}</li>
            </ul>
        `

四、对象简化写法

允许在对象的大括号里,直接写入变量和函数,作为对象的属性和方法;

        let name = '张三'
        let say = function() {
            console.log('你好!');
        }
        const obj = {
            name,
            say,
            run() {
                console.log('我会跑');
            }
        }
        console.log(obj);
        obj.say()
        obj.run()
  • 属性值和属性名相同时,可以简化成一个,方法名和方法值一样;
  • 对象中写一个函数可以省略function关键字

五、箭头函数以及声明特点

1.声明

        let fn = function() {}

        function fn1() {}
        // 箭头函数
        let fn2 = (a, b) => {
            return a + b
        }
        console.log(fn2(1, 2)); //3

2.箭头函数中的this

箭头函数的this指向始终指向函数声明所在作用域下的this指向(相当于使用父级的this)

       window.name = '张三'

        function getName() {
            console.log(this.name);
        }
        let getName2 = () => {
            console.log(this.name);
        }
        getName(); //张三
        getName2(); //张三
        const obj = {
            name: '李四'
        }
        getName.call(obj) //李四
        getName2.call(obj) //张三

3.不能作为构造函数去实例化对象

4.不能使用arguments

5.箭头函数的简写


        // 1. 省略小括号, 形参只有一个时
        let getName = name => {
            console.log(name);
        };
        // 2.如果函数体中只有一个返回语句,可以省略花括号和return关键字
        let add = (n) => {
            return n + n
        };
        //简化后
        let add1 = n => n + n
        console.log(add(1));
        console.log(add1(1));

六、函数参数赋初始值

      function add(num1, num2, num3) {
            return num1 + num2 + num3
        }
        console.log(add(1, 2, 3)); //6

        //一遍初始值位置靠后
        function add1(num1, num2, num3 = 10) {
            return num1 + num2 + num3
        }
        console.log(add1(1, 2, 3)); //6
        console.log(add1(1, 2)); //13

七、rest参数【...】

rest用于获取函数实参,用来代替arguments,将收集好的参数放入真数组中

        function add() {
            console.log(arguments);
        }
        add(1, 2, 3) //Arguments(3) [1, 2, 3, callee: ƒ, Symbol(Symbol.iterator): ƒ]

        // rest 参数
        function data(...arg) {
            console.log(arg);
        }
        data(1, 2, 3); //[1, 2, 3]
        
        //rest参数必须放在最后
        function data(a, b, ...arg) {
            console.log(a); //张三
            console.log(b); //18
            console.log(arg); //[4, 4, 1, 2, 3]
        }
        data('张三', 18, 4, 4, 1, 2, 3);

八、扩展运算符【...

用于展开可迭代对象(数组,类数组)(es7可以展开对象)

        let arr = [1, 2, 3]
        let arr2 = [...arr, 4, 5, 6]
        console.log(arr2); //[1, 2, 3, 4, 5, 6]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值