首页 > 其他分享 >2022.8.14 ES6

2022.8.14 ES6

时间:2022-08-14 11:44:32浏览次数:61  
标签:ES6 console 14 age name 2022.8 var log

03、Es6

3.1、ES6的概述

 

 

ECMAScript的快速发展:

 

 

编程语言JavaScript是ECMAScript的实现和扩展 。ECMAScript是由ECMA(一个类似W3C的标准组织)参与进行标准化的语法规范。ECMAScript定义了:

[语言语法] – 语法解析规则、关键字、语句、声明、运算符等。

[类型]– 布尔型、数字、字符串、对象等。

[原型和继承]

内建对象和函数的

[标准库] – [JSON]、[Math]、[数组方法]、[对象自省方法]等。

ECMAScript标准不定义HTML或CSS的相关功能,也不定义类似DOM(文档对象模型)的[Web API],这些都在独立的标准中进行定义。ECMAScript涵盖了各种环境中JS的使用场景,无论是浏览器环境还是类似[node.js]的非浏览器环境。

ECMAScript标准的历史版本分别是1、2、3、5。

那么为什么没有第4版?其实,在过去确实曾计划发布提出巨量新特性的第4版,但最终却因想法太过激进而惨遭废除(这一版标准中曾经有一个极其复杂的支持泛型和类型推断的内建静态类型系统)。

ES4饱受争议,当标准委员会最终停止开发ES4时,其成员同意发布一个相对谦和的ES5版本,随后继续制定一些更具实质性的新特性。这一明确的协商协议最终命名为“Harmony”,因此,ES5规范中包含这样两句话

ECMAScript是一门充满活力的语言,并在不断进化中。

未来版本的规范中将持续进行重要的技术改进

2009年发布的改进版本ES5,引入了[Object.create()]、[Object.defineProperty()]、[getters]和[setters]、[严格模式]以及[JSON]对象。

ES6: 是JavaScript语言的下一代标准,2015年6月正式发布。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

小结

ECMAScript是前端js的语法规范;可以应用在各种js环境中。如:浏览器或者node.js环境。 它有很多版本:es1/2/3/5/6,很多新特性,可以在js环境中使用这些新特性。

3.2、ES6的语法:let和const命令

变量和常量的严格区分。

核心代码:

新建html如下

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
 ​
     <script>
         // 传统定义 变量和常量 都使用var
         var name='taohy';
         var link ='http://baidu.com';
         var PI=Math.PI;
     
         console.log(name);
         console.log(link);
         console.log(PI);
     
         // ES6定义
         let name2 = 'dabao';
         let link2 = 'http://bing.com';
         const PI2 =Math.PI;
         
         console.log(name2);
         console.log(link2);
         console.log(PI2);
     </script>
     
 </body>
 </html>

 

 

双击运行如下:

 

 

小结 let : 可变变量 const 是常量 var:最原始。

3.2.1、ES6 let和const和var的区别

新建html

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
     <script>
         // let const解决
         // 1. var变量穿透的问题(var定义的相当于全局变量)
         for (let i = 0; i < 5; i++) {
             console.log(i);
        }
         // console.log(i); 会打印5
     
         // 2. 常量修改的问题(用var可以修改常量,用const就不能修改)
         const PI = Math.PI;
         PI = 100;
         console.log(PI);
     
         // 在实际开发和生产中,如果是小程序,uniapp或者脚手架中,可以大胆使用let和const
         // 在web开发中,建议还是var,有些浏览器不支持ES6
     </script>
     </body>
     
 </body>
 </html>

3.3、ES6的语法:模板字符串

以前: 我们都是使用 ‘’ 或者 “” 来把字符串套起来

现在: `` 【反引号】

 

 

用途:将表达式嵌入字符串中进行拼接。用${}来界定。ES6反引号(``)直接搞定。

  • 新建一个如下:

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
     <script>
         // 模板字符串
         var person = {
             name: 'taohy',
             address: '江苏省苏州市',
             link: 'csdn'
        }
         // 传统 ' ' " " 拼接
         let address = '我叫' + person.name + ',地址在' + person.address + ',链接在' + person.link;
         console.log(address);
         
         // ES6 ` ${} ` 拼接
         let address2 = `我叫${person.name},地址在${person.address},链接在${person.link}`;
         console.log(address2);
         
     </script>
     
 </body>
 </html>

 

 

3.4、ES6的语法:函数默认参数与箭头函数

函数默认参数 在方法的参数后面加上一个默认值即可 核心代码

新建html

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
     <script>
         // b默认参数值为20,不传递b时,默认20;传递就为实时值
         function sum(a,b=20){
             return a+b;
        }
         //100为a的值
         var sum = sum(100);
         console.log('result:'+sum);
         </script>
         
 </body>
 </html>

箭头函数

箭头函数简化函数的定义,可以让我们不用使用function关键字

箭头函数最直观的三个特点。

  • 不需要function关键字来创建函数

  • 省略return关键字

  • 继承当前上下文的 this 关键字

核心代码

新建html:

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
     <script>
         //重点 在未来项目开发项目中,比如小程序uniapp或者一些常见的脚手架大量使用
         function sum(a, b) {
             return a + b;
        }
     
         // 箭头函数 改进1
         var sum = (a, b) => {
             return a + b;
        }
     
         // 箭头函数 改进2
         var sum =(a,b) => a + b;
     
         // 通过上面的例子,找到规律
         // 规律1 去掉function
         // 规律2 在括号后面加箭头
         // 规律3 如果逻辑代码中仅有return 可以直接全部省去(如果有逻辑体,不能省略)
         // 规律4 如果参数只有一个,可以把括号也可以省略(如果多个参数,不能省略)
      </script>
     
 </body>
 </html>

3.5、ES6的语法:对象初始化简写

核心代码

它是指:如果一个对象中的key和value的名字一样的情况下可以定义成一个。

新建一个html

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
     <script>
         // 传统对象
         var info = {
             name: '小明',
             age: 20,
             link: 'csdn',
             go: function () {
                 console.log('我骑车上班!');
            }
        }
     
         // ES6简写
         // 因为对象是key:value存在
         // 1.如果key和变量的名字一致,可以指定一次即可
         // 2.如果value是一个函数,可以把 :function 去掉,只剩下()即可
         var name = 'taohy';
         var age = 20;
         var link = 'csdn';
         var info2 = {
             //本来这样写 name: name, 简写后如下
             name,
             age,
             link,
             go () {
                 console.log('我骑车上班!')
            }
        }
     
         console.log(info2.name);
         console.log(info2.age);
         console.log(info2.link);
         info2.go();
     </script>
     
 </body>
 </html>

 

 

对象简写案例

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
     <form action="">
         <p>账号:<input type="text" id="user"></p>
         <p>密码:<input type="password" id="password"></p>
         <p><input type="button" value="登录" id="loginbtn"></p>
     </form>
 ​
 ​
     <script>
         // document.getElementById('button').οnclick=funtion(){}
 ​
         $('#loginbtn').on('click', function () {
             var account = $('#user').val();
             var pwd = $('#password').val();
 ​
             // 这是一个对象 将account赋值给pars对象的user字段
             // var pars ={'user': account, 'password': pwd};
 ​
             // 上面对象简写的应用场景 前提是名字要一致
             var pars = {account, pwd };
 ​
             // 执行异步请求
             $ajax({
                 type: 'post',
                 url: 'xxx',
                 //对象传给data
                 data: pars,
                 // success: function () {
                 // 这是上面的简写,可以去掉function    
                 success() {
                }
            })
        });
       </script>
       
 </body>
 </html><!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
     <form action="">
         <p>账号:<input type="text" id="user"></p>
         <p>密码:<input type="password" id="password"></p>
         <p><input type="button" value="登录" id="loginbtn"></p>
     </form>
 ​
 ​
     <script>
         // document.getElementById('button').οnclick=funtion(){}
 ​
         $('#loginbtn').on('click', function () {
             var account = $('#user').val();
             var pwd = $('#password').val();
 ​
             // 这是一个对象 将account赋值给pars对象的user字段
             // var pars ={'user': account, 'password': pwd};
 ​
             // 上面对象简写的应用场景 前提是名字要一致
             var pars = {account, pwd };
 ​
             // 执行异步请求
             $ajax({
                 type: 'post',
                 url: 'xxx',
                 //对象传给data
                 data: pars,
                 // success: function () {
                 // 这是上面的简写,可以去掉function    
                 success() {
                }
            })
        });
       </script>
       
 </body>
 </html>

3.6、ES6的语法:对象解构

核心代码

对象解构 —- es6提供一些获取快捷获取对象属性和行为方式

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
     <script>
         // 对象是key:value存在,获取对象属性和方法的方式有两种
         // 方法1: 通过.
         // 方法2: 通过[]
         var name = 'taohy';
         var age = 20;
         var link = 'csdn';
 ​
         var info2 = {
             name,
             age,
             link,
             go() {
                 console.log('我骑车上班!')
            }
        }
         // 通过.方式
         console.log(info2.name);
         console.log(info2.age);
         console.log(info2.link);
         info2.go();
 ​
         // 通过[]方式 不加引号也行
         console.log(info2["name"]);
         console.log(info2["age"]);
         console.log(info2["link"]);
         info2['go']();
       
         console.log("ES6 快速获取属性和方法的一种形式");
         //ES6 快速获取属性和方法的一种形式
         var {name,age,go}=info2;
         // 还原代码 相当于上面
         // var name = info2.name;
         // var age = info2.age;
         console.log(name,age);
         go();
       </script>
       
 </body>
 </html>

 

 

3.7、ES6的语法:传播操作符【…】

把一个对象的属性传播到另外一个对象中

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
     <script>
         // 对象传播操作符 ...
         var person={
             name:'taohy',
             address:'suzhou',
             link:'csdn',
             phone:15250,
             go(){
                 console.log('开始上课了....')
            }
        };
 ​
         //解构出来 把person对象中剩余的参数传给person2对象
         var {name,address,...person2} = person;
         console.log(name);
         console.log(address);
         console.log(person2);  // 剩下的传播 {link: 'csdn', phone: 15250, go()}
         
         </script>
         
 </body>
 </html>

 

 

3.8、ES6的语法:数组map和reduce方法使用(了解)

目标:数组中map方法的应用场景

讲解

数组中新增了map和reduce方法。

map()

方法可以将原数组中的所有元素通过一个函数进行处理并放入到一个新数组中并返回该新数组。

举例:有一个字符串数组,希望转为int数组

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
 ​
     <script>
         let arr = [1, 2, 3, 4, 5, 6, 7];
         // 需求,对数组中每个数 乘以2
         // 传统做法
         let arrNew = [];
         for (let i = 0; i < arr.length; i++) {
             //push:放到新的数组arrNew中
             arrNew.push(arr[i] * 2);
        }
         console.log(arrNew);
 ​
 ​
         console.log("==========map循环===========");
         // ES6 Map自带循环功能 并且会把处理的值回填到对应的位置
         var arrNew2 = arr.map(function (a) {
             return a * 2; // 必须return
        })
         console.log(arrNew2);
         console.log("==========map简写===========");
         // 上面简写
         var arrNew3 = arr.map(a => a * 2);
         console.log(arrNew3);
       
         console.log("======================");
         // map 处理对象的数据
         // 实现对象年龄加1
         var users = [{ age: 10, name: '小绿' }, { age: 12, name: '小红' }];
 ​
         var usersNew= users.map(function (a) {
             a.age = a.age + 1;
             return a;
        })
         console.log(usersNew);
 ​
 ​
         console.log("======================");
         // 简写
         var usersNew1 = users.map(ele => {
             ele.age = ele.age + 1;
             return ele;
        })
         console.log(usersNew1);
       </script>
       
 </body>
 </html>

 

 

reduce()

reduce(function(),初始值(可选)) :

接收一个函数(必须)和一个初始值(可选),该函数接收两个参数:

  • 第一个参数是上一次reduce处理的结果

  • 第二个参数是数组中要处理的下一个元素 reduce() 会从左到右依次把数组中的元素用reduce处理,并把处理的结果作为下次reduce的第一个参数。如果是 第一次,会把前两个元素作为计算参数,或者把用户指定的初始值作为起始参数

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <title>Document</title>
 </head>
 <body>
 ​
     <script>
         var arr= [1,2,3,4];
         // a=1 b=2 a+b=3,代替1,2的位置 arr[3,3,4]
         // a=3 b=3 a+b=6,代替3,3的位置 arr[6,4]
         // a=6 b=4 a+b=10
         var result= arr.reduce(function(a,b){
             return a+b;
        })
         console.log("result = ", result); // 全部相加 10
     </script>
 ​
 </body>
 </html>

ES6 js新建文件中,在node中可以直接使用

 

 

 

 

标签:ES6,console,14,age,name,2022.8,var,log
From: https://www.cnblogs.com/shanzha/p/16585113.html

相关文章

  • 2022.8.12牛客小白补题
    B-Gaming_牛客小白月赛54(nowcoder.com)先把所有区间的权值加起来,考虑从覆盖住的区间中找一个不被覆盖的点,可以枚举删掉哪个点,删掉这个点造成的权值损失可以通过差分前缀......
  • 2022-8-14 剑指offer-二叉树递归
    剑指OfferII049.从根节点到叶节点的路径数字之和难度中等34收藏分享切换为英文接收动态反馈给定一个二叉树的根节点 root ,树中每个节点都存放有一个 0 到 ......
  • 《GB14925-2010》PDF下载
    《GB14925-2010实验动物环境及设施》PDF下载《GB14925-2010》简介本标准规定了实验动物及动物实验设施和环境条件的技术要求及检测方法,同时规定了垫料、饮水和笼具的......
  • 2022.8.13 颓废记录
    Preface最后一天~Content[CF1175E]MinimalSegmentCover给定形如\([l,r]\)的\(n\)条线段。\(m\)次询问,询问每次至少选几条线段才能使它们的并集包含线段\([x,y......
  • NC14699 队伍配置
    题目链接题目题目描述萌学姐在玩大型手游《futago》,他现在准备进入作战环节,所以他准备安排自己的队伍。队伍配置里,可供玩家选择的作战人物被称作“从者”,玩家可以对每......
  • NC21467 [NOIP2018]货币系统
    题目链接题目题目描述在网友的国度中共有n种不同面额的货币,第i种货币的面额为a[i],你可以假设每一种货币都有无穷多张。为了方便,我们把货币种数为n、面额数组为a[1..n]的......
  • ES5及ES6
    ES5的严格模式所谓严格模式,从字面上就很好理解,即更严格的模式,在这种模式下执行,浏览器会对JS的要求更苛刻,语法格式要求更细致,更符合逻辑。怪异模式:就是我们之前一直使用的......
  • 【题解】做题记录(2022.8)
    (之前的就暂时不补了就从以后的开始记)8.12CF1606CBanknotes题目分析:显然第\(i\)种货币可以用来组成\(a_{i+1}-a_{i}\)位,为了使得\(k\)最小,显然从低到高位依次......
  • js中es5及es6部分内容
    ES5及ES6es表示ECMASCript,他是从es3,es5,es6,es5是2009.12月发布的,es6是2015.6月发布的。vue2完全支持es5的(vue3完全支持es6的),react完全支持es6es5的新特性严格模式(对应的......
  • JavaScript ES6新增
    命名修饰符let:不能重复声明变量、块级作用域leta=1;leta=2;//报错const:初始化常量,必须给初始值,否则报错、在同一个作用域内,const定义的常量不能修改其值......