ES6

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>ES6</title>
    <script type="text/javascript" src="js/jquery.min.js"></script>
  </head>
  <body>
  <script type="text/javascript">
    //let   块级作用域  {}
    //var  函数作用域  function f() { }
    //JS解析过程二个阶段:预处理/执行期
    //var   function
    //1、let不存在变量提升  先声明 后使用
    //console.log(a);
    //let a = '123';
    //2、不允许重复声明   不允许在相同作用域中重复同一个变量
    for(let i=0;i<5;i++){
      console.log(i);
    };
    console.log(i);  //error

    var arr = [];
    for(let i=0;i<5;i++){
      arr[i] = function(){
        console.log(i);
      }
    };
    arr[2]();

    //暂时性死区
    var n = '123';
    if(true){
      n='345';
      let n ;
    };
    let x=y,y=2;
    function a() {
      console.log(x,y)
    };
    a()
    //块级作用域
    function f() {
      var a = 10;
      if(true) {
        var a= 20;
      };
      console.log(a)
    };

    function f() {
      let a = 10;
      if(true) {
        let a= 20;
      };
      console.log(a)
    };
    f()

    //const 声明一个只读的常量 一旦声明,常量的值不能改变
    //一旦声明,必须初始化,不能以后赋值操作!!!
    const a;//error
    const a = '123';
    a='456' //error
    const obj = {};
    obj.name='lily';
    obj.age=20;
    obj.action=function(){};
    obj={};//error
    const arr=[];
    arr.push('0');
    arr = ['0']//error

    //了解块级作用域
    var str='123';
    function f(){
      console.log(str);
      if(false){
        var str='456';
        }
      //var str='456';
    };
    f();

    //解构赋值
    //从数组 和对象中提取值,对变量进行赋值,这就是解构
    let x=1,y=2,z=3;
    let [x,y,z] =[3,2,1]
    //1、数组解构
    let [x,,z] =[3,2,1]
    //默认值
    //如果值为undefined 才会获取默认值
    let [a1,y='2'] = [3,4,5]
    let [x,y,z]=[1,[2,3],4];  //数组
    let [x,y,z]=[1,{'name':'abc'},4];  //对象
    let [a1='1',b1='2'] = [3,,5]   //a1=3  b1=2
    let [a=f()] =[1];   //函数   惰性求值 如果变量有值不运行f(),除非为空 /undefined
    function f(){
      return '2'
    }
  </script>
  </body>
</html>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>ES6</title>
    <script type="text/javascript" src="js/jquery.min.js"></script>
  </head>
  <body>
  <script type="text/javascript">
    //箭头函数  函数名=参数=>函数体
    let f = v => v; //===>  var f=function(v){return v};
    let f = () => '123'; //===>  var f=function(){return '123'};
    let f = (n1,n2) => n1+n2; //===>  var f=function(n1,n2){return n1+n2};
    let f = (n1,n2) => {return n1+n2};
    let f = (n1,n2) => ({name:n1,age:n2})

    //1、箭头函数不能作为构造函数 ,不能使用new
      var Fun=()=>{}
      var f1=new Fun() //error
      //2、箭头函数没有它自己的this,this值断函外围作用域
      var obj={
        name:'a',
        f:function(){
          console.log(this.name)
        }
      }
      //3、箭头函数没有原型属性
      function a(){}
      a.prototype
      var b=()=>{return 1}
      b.prototype  //error

      //arguments   参数  箭头函数不绑定arguments  取代rest参数
      function a(a){
        console.log(arguments)
      };
      a(1)

      var b =(b) =>{
        console.log(arguments)  //arguments is not defined
      };
      b(1)

      var c =(...c) =>{    //扩展
        console.log(c)
      };
      c(1,2,3,4,5,6)

      //数组解构  对象解构
      var obj ={
        name:'a',
        age:20,
        msg:'12345'
      };
      var {name,age,msg} =obj;   //对象解构
      var {x,y} ={y:'aaa',x:'bbb'};
      var [x,y]=[2,5];  //var x =2;var y=5;
      var {x:a,y:b} ={y:'aaa',x:'bbb'};  //x/y匹配模式  a/b变量名称
      var {x:x,y:y} ={y:'aaa',x:'bbb'};
      var {x=1} ={y:'aaa',x:'bbb'};
      var {x:y=1} ={y:'aaa',x:'bbb'};
      let x;  //已经声明的变量用于解构赋值,加()
      ({x}={x:1})
      function obj(){
        let obj2={
          name:'abc',
          age:20
        };
        return obj2;
      }
      let {name:a,age:b}=obj();

      var obj3={
        name:'aaa',
        age:20,
        friends:['a','b','c'],
        members:{x:1,y:2}
      };
      var {name,age,friends:f,members:m} = obj3;
  </script>
  </body>
</html>
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>ES6</title>
    <script type="text/javascript" src="js/jquery.min.js"></script>
  </head>
  <body>
  <script type="text/javascript">
      //字符串的解构
      let [a,b,c,d] ='string';
      a//s

      //函数的解构
      function fun([x,y]){
        return x + y;
      };
      fun([2,3]);  //5

      function fun([x=0,y=0]){
        return x + y;
      };
      fun([undefined,3]);  //3

      function fun([x=0,y=0]){
        return x + y;
      };
      fun([]); //0

      //对象
      function num({x,y}) {
        console.log(x,y)
      };
      num({x:2,y:5});

      //var arr =['a','b','c','d'];
      // arr.map((item,index)=> {
      //         return item
      // });
      //[[1,2],[3,4]].map(([a,b])=>{return a});   //1,3
      //[[1,2],[3,4]].map(([a,b])=>{return b});   //2,4
      //[[1,2],[3,4]].map(([a,b])=>{return a+b});   //3,7

      //扩展
      //字符串扩展
      var str = 'hello world';
      str.substring(3,5)   //开始 -结束
      str.substr(3,5)     //开始-长度
      str.indexOf('o')
      if(str.indexOf('o')!=-1){}
      str.includes('k')   //是否存在字符串
      str.startsWith('hello',3)   //是否头部   第二个参数表示搜索的位置
      str.endsWith('hello')    //是否尾部
      repeat('3')    //重复N次
      //补全
      var s = 's';
      var a = s.padStart(4,'xy');  //xyxs  前面补全
      var a = s.padEnd(4,'xy');  //sxyx   后面补全
      //模板字符串   ${}
      $(".lists").html('<li>'+item.name+'</li>');
      $(".lists").html(<li>${item.name+'abc'}</li>);

      //函数扩展   箭头函数
      //es5
      function fun(x,y){
        y = y || '10';
      };
      //es6
       function fun(x,y='10'){

      };
      //es6  rest参数
      function fun(...x){
        console.log(x)
      };
      fun(1,23,43,53,34,34,3,53,53,53,)
      let f1=(...n)=>n;

      var arr=[1,2,3,4,5,6];
      fun(...arr);
      function fun(...x){
        console.log(x)
      };

      //数组合并
      //es5
      var arr1=[1,3,4];
      var arr2 =[2,3,4,5];
      arr1.concat(arr2);
      //es6
      [...arr1,...arr2]

      //Set 构造函数   类似数组 成员信息唯一
      const arr = new Set();
      const arr2 = new Set([1,2,3,4,2,2,3,4,5]);
      arr.add(1).add(2).add(3);
      //add()   //添加数据
      //size    //长度   去重
      //delete() //删除
      has()   //判断是否为set成员
      clear()  //清除所有

      //转为数组  Array.from()
      const arr2 = new Set([1,2,3,4,2,2,4,4,5]);
      let arr3 = Array.from(arr2);
      //循环  for of
      const arr7 = new Set([1,2,3,4,2,2,4,4,5]);
      for(let list of arr7.keys()){    //arr7.keys() 键名  arr7.values()值    arr7.entries 键值对遍历
        console.log(list)
      };

      //filter()方法  取二种数据的交集
      [10,2,4,23,44,23,45].filter(function(item,index,array){return item>10});
      var q1 = new Set([1,2,3,4,2,2,4,4,5]);
      var q2 = new Set([4,4,5,7,8,9]);
      var q3 = new Set([...q1].filter(item=>q2.has(item)))
      console.log(q3); //45
      var q1 = new Set([1,2,3,4,2,2,4,4,5]);
      var q2 = new Set([4,4,5,7,8,9]);
      var q3 = new Set([...q1].filter(item=>!q2.has(item)))
      console.log(q3);  //123
      var q1 = new Set([1,2,3,4,2,2,4,4,5]);
      var q2 = new Set([4,4,5,7,8,9]);
      var q3 = new Set([...q2].filter(item=>!q1.has(item)))
      console.log(q3);  //789

  </script>
  </body>
</html>

Original: https://www.cnblogs.com/Dewumu/p/14464378.html
Author: 德乌姆列特
Title: ES6

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606568/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Dockerfile 使用 SSH docker build

    如果在书写 Dockerfile 时,有些命令需要使用到 SSH 连接,比如从私有仓库下载文件等,那么我们应该怎么做呢? Dockerfile 文件配置 为了使得 Dockerfi…

    Linux 2023年6月7日
    093
  • 我叫MongoDb,不懂我的看完我的故事您就入门啦!

    这是mongo基础篇,后续会连续更新4篇 大家好我叫MongoDb,自从07年10月10gen团队把我带到这个世界来,我已经13岁多啦,现在越来越多的小伙伴在拥抱我,我很高兴。我是…

    Linux 2023年6月14日
    0126
  • centos7 安装MariaDB 10.6

    镜像下载、域名解析、时间同步请点击阿里云开源镜像站 背景 centos7使用yum install mariadb-server命令安装的默认版本是5.5的,这是因为系统默认源只有…

    Linux 2023年5月27日
    0373
  • 微信小程序开发(1)

    微信小程序开发(1) 微信小程序开发(1) 代码结构与基本配置 代码结构与基本配置 基本HelloWorld创建 开发框架——基本构成 微信开发者工具 版本控制 WXML wxml…

    Linux 2023年6月8日
    0101
  • centos7 设置开机启动任务

    环境:centos7 需求:前两天调通的DNS server(bind/named)设置开机自启动 操作: 修改 /etc/rc.local 注意这个 rc.local 文件默认是…

    Linux 2023年6月6日
    0105
  • docker与kubectl 命令自动补齐

    安装自动补齐需要依赖工具 docker命令补齐: 执行下列命令 kubectl命令补齐: Original: https://www.cnblogs.com/qianyuliang…

    Linux 2023年6月8日
    076
  • MySQL表空间回收的正确姿势

    不知道大家有没有遇到这样的一种情况,线上业务在MySQL表上做增删改查操作,随着时间的推移,表里面的数据越来越多,表数据文件越来越大,数据库占用的空间自然也逐渐增长 为了缩小磁盘上…

    Linux 2023年6月13日
    092
  • WEBSHELL-恶意代码检测

    静态查杀 提取特征写成规则库,调用规则库查杀。基于规则,会比较快,但漏报、误报会比较明显,一般的Webshell一句话木马变形混淆会比较多。 yara规则 $eval = /(&l…

    Linux 2023年5月28日
    0126
  • 白话TCP/IP原理

    TCP/IP(Transmission-Control-Protocol/Internet-Protocol),中文译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Inte…

    Linux 2023年6月14日
    078
  • 账号分享

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月8日
    0114
  • 【git】git将本地代码上传远程仓库

    环境要求: windows平台可以直接下载安装git.exe(安装选中加入),右键文件使用git bash按以下命令输入 Ubuntu平台下执行sudo apt install g…

    Linux 2023年6月13日
    0113
  • Linux 服务器巡检脚本

    bash;gutter:true;</p> <h1>!/bin/bash</h1> <p>cat < $RESULTFILE …

    Linux 2023年6月13日
    0134
  • MIT6.828——Lab2(麻省理工操作系统实验)

    Lab2 Lab2 是关于操作系统存储管理的细节。主要是建立内存模型,页表,物理地址映射等。在Lab2之前,请复习好前序知识: Lab2内存管理准备知识 MIT6.828——Lab…

    Linux 2023年5月27日
    0107
  • windows 使用挂载盘提供FTP服务

    环境说明: NFS服务器:centos7.0 IP:192.168.18.10 FTP服务器:windows server 2008 IP:192.168.18.41 准备工作: …

    Linux 2023年6月8日
    0169
  • Vmware部署Linux无人值守安装Centos7系统

    Linux – 无人值守安装服务 需求分析 – 使用光盘镜像来安装 Linux 系统的方式; 坦白讲, 该方法适用于只安装少量 Linux 系统的情况, 如果生产环境中…

    Linux 2023年6月13日
    0112
  • 二进制安装docker

    下载二进制包 压到 /usr/local/bin ,我用的版本比较新 https://download.docker.com/linux/static/stable/x86_64/…

    Linux 2023年6月6日
    0102
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球