【无标题】

ES6简介

ES全程ECMAScript,是脚本语言的规范,而平时经常写的JavaScript是ECMAScript的实现,所以ES新特性其实指的是JavaScript的新特性。ES6是其中很重要的一个版本,变动内容最多具有里程碑的意义,加入了许多新的语法特性,就业必备。

let变量声明以及声明特性

  //1、变量不能重复声明
  let str="123";
  let str="345";//变量已存在,再次声明会报错
    //2、块级作用域
    {
        let num = 123;
    }
    console.log(num);//undefined   let是块级作用域,所以会报错
    {
        var num = 123;
    }
    console.log(num);//var是函数作用域,所以在整个函数内都是有效的
    //3、声明变量不会提升到代码块顶部,即不存在变量提升
    console.log(song);
    var song="恋爱达人";//undefined
    console.log(str);
    let str = "123";//报错,不存在变量提升
    //4、不影响作用域链
    {
        let str = "hello,world";
    function fn() {
        console.log(str);
        //会先在该作用域下寻找变量str,若没有找到,则到它的上层作用域寻找
    }
        fn();
    }

const声明常量以及特点

const常量(不能修改的常量)

    const STR='hello,world';
    //1、一定要赋初始值
    //2、一般常量使用大写
    //3、常量的值不能修改
    //4、块级作用域
    //5、对于数组和对象的元素修改,不算作对常量的修改,不会报错
    const TEAM=['UZI','MXLG','Ming','Letme'];
    TEAM.push('Meiko');
    //常量地址没有改变
    TEAM=100;//这样就会报错

变量的解构赋值

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

    <script>
	    let node = {
	        type: "iden",
	        name: "foo"
	    }
	    let {type, name} = node;//完全解构
	    console.log(type, name);//iden foo
	
	    let obj = {
	        a: {
	            name: "张三"
	        },
	        b: [],
	        c: "hello,world"
	    }
	    let {a} = obj;//不完全解构
	    console.log(a);//{name: '张三'}
	
	    // 对数组解构
	    let arr = [1, 2, 3];
	    let [x, y, z] = arr;//完全解构
	    console.log(x, y, z);//1 2 3
	
	
	    //可嵌套
	    let arr1 = [2, [3], 4];
	    let [m, [n], k] = arr1;
	    console.log(m, n, k);//2 3 4
    </script>

模板字符串

ES6引入了新的声明字符串的方式

    // 1、声明
    let string=`hello,world!`;
    console.log(string);
    // 2、内容中可以直接出现换行符
    let str=`<ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            </ul>`;
    // 3、变量拼接
    let lovest='杜兰特';
    let output=`${lovest}是我心目中最伟大的球员`;
    console.log(output);

对象的简化写法

    // ES6允许在大括号里面,直接写入变量和函数,作为对象的属性和方法
    // 这样的书写更加简洁
    let name = '张三';
    let change = function () {
        console.log("我们可以改变你!")
    }
    const study = {
        name,
        change,
        improve() {
            console.log("我们可以提高你的技能!");
        }
    };
    study.change();//我们可以改变你!
    study.improve();//我们可以提高你的技能!

箭头函数以及声明特点

    //箭头函数
    let add1 = (a, b) => {
        return a + b;
    }
    // 调用函数
    let result = add1(1, 2);
    console.log(result);
    // 1、箭头函数this是静态的,this始终指向函数声明时所在作用域下的this的值
    function getName() {
        console.log(this.name);
    }

    let getName2 = () => {
        console.log(this.name);
    }
    window.name = '戴尔';
    // 直接调用(上面两个例子this指的都是window)
    getName();// 戴尔
    getName2();//戴尔

    const school = {
        name: "品牌"
    }

    // call方法调用  使用 call() 方法,可以编写能够在不同对象上使用的方法。
    getName.call(school);//品牌
    getName2.call(school);//戴尔

ES6允许给函数参数赋值初始值

    // 1.形参初始值,具有默认值的参数,一般位置靠后
    function add(a,b,c = 10){
        return a + b + c;
    }
    let result = add(5,6);
    console.log(result);

    // 2.与解构赋值结合
    function fn1(opt){
        name = opt.name;
        age = opt.age;
    }
    // 简化后
    function fn1({name,age}){
        name = name;
        age = age;
    }

    fn1({
        name: "张三",
        age: 21
    });

拓展运算符

    // [...]拓展运算符能将【数组】转换为逗号分隔的【参数序列】
    // 声明一个数组...
    const people=['熊大',"熊二","光头强"];
    function chunwan(){
        console.log(arguments);
    }
    chunwan(people);
    chunwan(...people);

    // 拓展运算符的应用
    // 1、数组的合并
    const kuaizi=['王太利','肖央'];
    const fenghuang=['曾毅','玲花'];
    const zuixuanxiaopingguo=[...kuaizi,...fenghuang];
    console.log(zuixuanxiaopingguo);//['王太利', '肖央', '曾毅', '玲花']
    // 2、数组的克隆
    const sanzhihua=['E','G','M'];
    const sanyecao=[...sanzhihua];
    console.log(sanyecao);
    // 3、将伪数组转换为真正的数组
    const divs=document.querySelectorAll('div');
    const divArr=[...divs];
    console.log(divArr);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值