ES6丨前端进阶基础 ES6的关键字,新特性以及解构赋值

Posted Aic山鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6丨前端进阶基础 ES6的关键字,新特性以及解构赋值相关的知识,希望对你有一定的参考价值。

  • 💂 个人主页:Aic山鱼 
  •  个人社区:山鱼社区

  • 💬 如果文章对你有所帮助请点个👍吧!
  • 欢迎关注、点赞、收藏(一键三连)和订阅专

目录

前言

什么是ecmascrpit

一,let关键字的特点

1.不能重复声明变量

 2.块级作用域

3.不存在变量提升

 4.不影响作用域链

 二,let的使用

三,const 声明常量以及特点

四,const的变量解构赋值

1.数组的结构

 2.对象解构赋值

五,ES6新增字符串声明方式

1.反引号

2.新特性

 3.变量拼接

六,对象的简化写法

 七,箭头函数

写在最后 


前言

ES全称EcmaScript,是脚本语言的规范,而平时经常编写的javascript,是EcmaScript的一种实现,所以ES新特性其实指的就是JavaScript的新特性

什么是ecmascrpit

ECMA (European Computer Manufacturers Association)中文名称为欧洲计算机制造商协会,这组织的目标是评估、开发和认可电信和计算机标准。1994年后该 组织改名为Ecma国际。ecmascrpit是由Ecma国际通过ECMA-262标准化的脚本程序设计语言。

一,let关键字的特点

1.不能重复声明变量

<script>
         let name = 'shanyu';
         let name = 'AIC';
</script>

 2.块级作用域

只能在块内使用,否则会报错

<script>       
 // 2.块级作用域,只在块内可使用(如:if,for,while,else)
         
             let name = '陆小果';
         
         console.log(name);
</script> 

3.不存在变量提升

<script>
        // 3.不存在变量提升(也就是不允许先使用后声明)
         console.log(start);
         let start = '武器大师';
</script>

 4.不影响作用域链

 二,let的使用

<body>
    <div class="container">
        <h2 class="page-header">点击切换颜色</h2>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
    <script>
        let item = document.getElementsByClassName('item');
        // 使用let声明变量,所声明的变量只在该块内使用所以可以用item[i]
        for (let i = 0; i < item.length; i++) 
            item[i].onclick = function () 
                item[i].style.background = 'skyblue';
            
        
    </script>
</body>

三,const 声明常量以及特点

<body>
    <script>
        // 声明常量
        // 1.必须要赋初始值
        const NAME = '山鱼';
        // 2.一般常量使用大写(当然小写也不会报错,不成文规定)
        // 3.常量的值不能修改
        NAME = 'JHXL';
        // 4.块级作用域
        
            const START = 'BALEITE';
        
        console.log(START);
        // 5.对于数组和对象的元素修改,不算对常量值的修改,不会进行报错
        const PLAY = ['SYZ', 'PPD', 'NANDAO', 'UZI'];
        PLAY.push('ZHIXUN');
    </script>

四,const的变量解构赋值

1.数组的结构

<script>        
//1. 数组的结构
        const TW = ['赵天王', '钱天王', '孙天王', '李天王'];
        let [zhao, qian, sun, li] = TW;
        console.log(zhao);
        console.log(qian);
        console.log(sun);
        console.log(li);
</script>

 2.对象解构赋值

<script>       
const xiaopin = 
            name: '赵本山',
            age: '100',
            skill: function () 
                console.log('我是白云,我是黑土');
            
        ;
        let  name, age, skill  = xiaopin;
        console.log(name);
        console.log(age);
        console.log(skill);
        skill();
</script>

五,ES6新增字符串声明方式

1.反引号

 

2.新特性

 3.变量拼接

使用$来拼接

<script> 
 // 3.变量拼接 使用$来拼接
        let hero = `山鱼`;
        let like = `$hero爱吃猫`;
        console.log(like);
</script>

六,对象的简化写法

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

<body>
    <script>
        // ES6允许只放变量进到对象里
        let name = '山鱼';
        let like = function () 
            console.log('我们一起学前端不放弃!');
        
        const start = 
            name,
            like,
            skill() // 可以省略冒号和function
                console.log('我会ES6');
            
        
        console.log(start);
    </script>
</body>

 七,箭头函数

1.箭头函数this是静态的,this始终指向函数声明时所在作用域下的值

    <script>
        // let fn = (a, b) => 
        //     return a + b
        // 
        // 调用函数
        // let result = fn(3, 3);
        // console.log(result);
        // 特性
        // 1.this是静态的,this始终指向函数声明时所在作用域下的值
        function gName1() 
            console.log(this.name);
        
        let gName2 = () => 
            console.log(this.name);
        
        window.name = '山鱼';
        const like = 
            name: 'SHANYU'
        
        // 直接调用
        gName1(); //返回值为’山鱼‘ 
        gName2(); //返回值为’山鱼‘ 
        // 用call调用,call可以改变函数内部值
        gName1.call(like);// 返回值为'SHANYU'
        gName2.call(like)//返回值为’山鱼‘
</script>

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

<script>        
		// 2.不能作为构造函数作为实例化对象
        let Person = (name, age) => 
            this.name = name;
            this.age = age;
        
        let it = new Person('旺财', 2);
        console.log(me);
</script>

 3.不能使用arguments

<script>
         // 3.不能使用arguments变量(arguments可以用来保存实参)
         let fn = () => 
             console.log(arguments);
         
         fn(1, 2, 3);
</script>

 4.箭头函数的简写

<script>
        // 1,当形参有且只有一个的时候可以省略小括号
         let jia = a => 
             return a + a;
         
         console.log(jia(9));
        // 2,当代码体只有一条语句的时候可以省略大括号
        let pow = n => n * n;
        console.log(pow(3));// 语句的执行结果就是返回值
    </script>

写在最后 

我是Aic山鱼,感谢您的支持
​原 创 不 易 ✨还希望支持一下
点赞👍:您的赞赏是我前进的动力!
收藏⭐:您的支持我是创作的源泉!
评论✍:您的建议是我改进的良药!
山鱼🦈社区:山鱼社区💌💌

ES6丨前端进阶基础 二,ES6rest参数,Symbol第七种数据类型

CSDN话题挑战赛第2期
参赛话题:面试宝典

目录​​​​​​​

前言

一,函数参数的默认值设置

二,rest参数

三,扩展运算符

扩展运算符应用

1.合并数组

2.数组的克隆

3.伪数组转化成真正的数组

四,Symbol第7种数据类型

1.七种数据类型

 2.Symbol特点

3.Symbol的使用

4.如何给对象添加Symbol方法

五,迭代器

1.什么是迭代器?

2.迭代器的应用 ​​​​​​​

写在最后


前言

ES全称EcmaScript,是脚本语言的规范,而平时经常编写的JavaScript,是EcmaScript的一种实现,所以ES新特性其实指的就是JavaScript的新特性

一,函数参数的默认值设置

es6允许赋初始值 形参初始值具有默认值的参数,一般位置要靠后(不成文规定)

    <script>
        // 1.es6允许赋初始值 形参初始值具有默认值的参数,一般位置要靠后(不成文规定)
        // 这里参数不能给第一个赋初始值 否则返回值就是NaN
        function even(d, e, f = 10) 
            return d + e + f;
        
        let result = even(6, 8);
        console.log(result);
        // 2.与解构赋值结合
        function cont( names = 'ZHUZHUXIA', sex, school ) 
            console.log(names);
            console.log(sex);
            console.log(school);
        
        cont(
            // 如果不进行传参那么最后的返回值就会是默认值;
            // names: 'shanyu',
            sex: 'man',
            school: 'HER',
        )
    </script>

​​​​​​​

二,rest参数

引入rest参数代替了argument

    <script>
        // es6引入rest参数,用于获取函数的实参,代替了argument
        // rest参数 返回值为数组
        function date(...args) 
            console.log(args);
        
        date('SHANYU', 'UZI', 'XAIOMO');
        // 注:rest参数必须放到最后
        function fn(a, b, c, ...args) 
            console.log(a);
            console.log(b);
            console.log(c);
            console.log(args);
        
        // args的实参就是5678
        fn(1, 3, 4, 5, 6, 7, 8);
    </script>

三,扩展运算符

扩展运算符将数组转化为参数序列用逗号分割开

    <script>
        // 扩展运算符将数组转化为参数序列用逗号分割开
        // 声明一个数组
        const start = ['黄子杰', '鹿哈', '鹿管'];
        // 声明一个函数
        function eso() 
            console.log(arguments);
        
        eso(...start);// 也就是等价于 eso('黄子杰', '鹿哈', '鹿管');
    </script>

 

扩展运算符应用

1.合并数组

    <script>
        // 将数组合并
        // 声明俩数组
        const start1 = ['黄子韬', '迪丽热巴', '郭德纲'];
        const start2 = ['鹿晗', '关晓彤', '郭麒麟'];
        const startadd = [...start1, ...start2];
        console.log(startadd);
    </script>

2.数组的克隆

<script>
            // 2.数组克隆
        // 注:如果数组内有引用类型数字据的话,是一个浅拷贝
        const song = ['余香', '偏爱', '泡沫'];
        const song1 = [...song];
        console.log(song1);
 </script>

 

3.伪数组转化成真正的数组

<body>
    <div></div>
    <div></div>
    <div></div>
    <script>
        const divs = document.querySelectorAll('div');
        const divsArr = [...divs];
        console.log(divsArr);
 </script>
</body>

四,Symbol第7种数据类型

1.七种数据类型

ES6 引入了一种新的原始数据类型Symbol, 表示独一无二的值。它是JavaScript语言的第七种数据类型,是一种类似于字符串的数据类型

Uundefined
Sstring symbol
Nnull
Oobject
Bboolean

 2.Symbol特点

  1. Symbol 的值是唯一的,用来解决命名冲突的问题

  2. Symbol 值不能与其他数据进行运算

  3. Symbol 定义的对象属性不能使用for..in 循环遍历,但是可以使用Reflect.ownKeys来获取对象的所有键名

3.Symbol的使用

    <script>
        // 创建symbol 这里是函数
        let sy = Symbol();
        let sy1 = Symbol('山鱼');
        let sy2 = Symbol('山鱼');
        console.log(sy1 === sy2);
        // 返回值为false 
        // 虽然都是山鱼,但是都具有唯一行,就像俩同名同姓的人身份证号不一样
        // Symbol.for() 创建 ,被称为函数对象
        let sy3 = Symbol.for('one');
        let sy4 = Symbol.for('one');
        console.log(sy3 === sy4);
        // 返回值为true
    </script>

4.如何给对象添加Symbol方法

 <script>
        // 1.给对象添加Symbol方法
        // 第一种
        let play = 
            name: '老鹰捉小鸡',
            left: function () 
                console.log('向左走');
            ,
            right: function () 
                console.log('向右走');
            
        
        let moves = 
            left: Symbol(),
            right: Symbol()
        ;
        play[moves.left] = function () 
            console.log('向左走');
        
        play[moves.right] = function () 
            console.log('向右走');
        
        console.log(play);
        // 第二种
        let game = 
            name: '全民打飞机',
            [Symbol('move')]: function () 
                console.log('我可以上下左右移动');
            ,
            [Symbol('kill')]: function () 
                console.log('我可以击杀敌机');
            
        
        console.log(game);
</script>

 

五,迭代器

1.什么是迭代器?

迭代器(Iterator)是一种接口,为各种不同的数据结构提供统一的访问机制。 任何数据结构只要部署Iterator 接口,就可以完成遍历操作。ES6 创造了一种新的遍历命令for..of 循环Iterator接口for..of消费,原生具备iterator接口的数据(可用forof遍历)

    <script>
        // 声明一个数组
        const mingzhu = ['西游记', '红楼梦', '水浒传', '三国演绎'];
        // 使用for in循环,保存的是键名
        // 使用for of循环,保存的是键值
        // for (let v of mingzhu) 
        //     console.log(v);
        // 
        // 调用对象的next方法
        let iterator = mingzhu[Symbol.iterator]();
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
        console.log(iterator.next());
    </script>

2.迭代器的应用 ​​​​​​​

<script>
        // 声明一个对象
        const classroom = 
            name: '高三296',
            stus: [
                '小赵',
                '小李',
                '小陈',
                '小刘'
            ],
            [Symbol.iterator]() 
                // 声明一个索引变量
                let index = 0;
                let _this = this;
                return 
                    next: function () 
                        if (index < _this.stus.length) 
                            const result = 
                                value: _this.stus[index], done: false
                            
                            index++;
                            return result;
                         else 
                            return  value: undefined, done: true ;
                        
                    
                ;
            
        
        // 使用for of遍历对象
        for (let v of classroom) 
            console.log(v);
        
    </script>

写在最后

我是Aic山鱼,感谢您的支持
​原 创 不 易 ✨还希望支持一下
点赞👍:您的赞赏是我前进的动力!
收藏⭐:您的支持我是创作的源泉!
评论✍:您的建议是我改进的良药!
山鱼🦈社区:山鱼社区💌💌

以上是关于ES6丨前端进阶基础 ES6的关键字,新特性以及解构赋值的主要内容,如果未能解决你的问题,请参考以下文章

ES6 小结(前端开发js技术进阶提升总结)

前端:ES6一些新特性

ES6零基础教学 解析彩票项目

ES6零基础教学 解析彩票项目

前端面试经典题之ES6新特性

ES6进阶之路