zoukankan      html  css  js  c++  java
  • ECMAscript6

    简介:

    ECMAscript6是javascript语言的下一代标准,于2015年6月发布,为了使JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

    1.let命令定义变量

     a.let没有声明提前

    console.log(a)
    let a = 10
    //此时打印台会报错,访问的是window,window上无a

    b.let具有块级作用域,声明的变量只在let命令的代码快内有效

    {
        let a = 10
        console.log(a)//打印10
    }
    console.log(a);//回报错,无法访问到a

     但此时的let非常适合for循环

      如果是var的话由于预编译函数还未执行时i的值已经是10了

            var a = [];
            for (var i = 0; i < 10; i++) {
              a[i] = function () {
                console.log(i);
              };
            }
            a[6](); // 传入0-9打印的都是10;       

      let就不会出现这样的情况了

    var a = [];
    for (let i = 0; i < 10; i++) {
      a[i] = function () {
        console.log(i);
      };
    }
    a[6](); // 打印6

    c.var如果重复声明,后面会覆盖前面,现在  let不允许重复声明

    2.const定义常量

     一旦声明,常量的值就不可改变

    const p = 1;
    console.log(p);//1
    p = 3;
    console.log(p)//报错

    const一旦声明变量,就必须立即初始化,不能留到以后赋值。

    const p;
    console.log(p);//报错

    3.字符串的拼接

            var uname = "jack"
            var str = ""
            str += "<ul> 
                <li> " + uname + "</li> 
                <li>nan</li> 
                <li>18</li> 
                <li>150123456878</li> 
                <li>xxx@xxx.com</li> 
            </ul>"
            // 切换成:
            str += `<ul> 
                <li>${uname}</li> 
                <li>nan</li> 
                <li>18</li> 
                <li>150123456878</li> 
                <li>xxx@xxx.com</li> 
            </ul>`            

    4.数组的复制  ---   ...超引用

         var arr = [1,2,3,4,5];
            console.log(...arr)//1 2 3 4 5
              // ... 超引用
            var arr4 = [...arr];//新数组
            console.log(arr4)

    5.解构赋值

          // 解构,数组的格式
            var [a,b,c] = [40,20,30];
            console.log(a,b,c)//40 20 30
    
            var [a,[b,c],d] = [5,[10,20],30];  //格式对应即可
            console.log(a,b,c,d)//5 10 20 30
    
            // json格式
            var {a,b,c} = {a:10,c:30,b:20};    //可以调换顺序
            console.log(a,b,c);//10 30 20
    
            // 解构
            var [{a,b},c,[d,e],f] = [{b : "jack",a : "100"},5,[10,20],30];
            console.log(a,b,c,d,e,f)//100 jack 5 10 20 30    

    6.循环

    for   of循环只能用来遍历数组,不可以遍历obj

         var arr = ["red","green","blue","yellow","black"];
            for(var i of arr){
                console.log(i);   //输出的直接是值
            }

    7.Map对象

    // map就是用来存东西的,跟obj类似
            var map = new Map();   
            console.log(map);
            map.abc = "jack";
            map.age = "100";
            console.log(map);
    
            // 设置值  增 该
            map.set("a","red");
            map.set("b","green");
    
            //
            console.log(map.abc);
            console.log(map.get('a'));
    
            // 删除
            delete map.abc;
            delete map.a;
            map.delete("a");
            console.log(map)

    8.箭头函数

    只是写法上改变了

    // var fun = function(){
    
    // }
    var fun = () => {
        console.log('hello')//hello
    } 
    fun()

    9.promise对象

    主要是用来处理异步数据的

    在promise中,有三种状态,但只有两种可能

    pending(等待,处理中)     --->     resolve(完成)
                                                   --->     rejected(失败,拒绝)

    const promise = new Promise(function(resolve, reject) {
    
      if (/* 异步操作成功 */){
        resolve(value);
      } else {
        reject(error);
      }
    });

    Promise生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数。

    promise.then(function(value) {
      // success
    }, function(error) {
      // failure
    });
    //all
    // 只有当所有的promise全部成功才能走成功,否则失败
            var p1 = Promise.resolve(10);
            var p2 = Promise.resolve(20);
            var p3 = Promise.reject(30);
            
            Promise.all([p1,p2,p3]).then(function(data){
                console.log(data);
            },function(err){
                console.log(err);
            })
    // race也是返回一个promise对象
    // 获取最先得到的结果,得到以后就不去执行了
    
            var p1 = new Promise(function(resolve,reject){
                setTimeout(resolve,100,"first");
            })
            var p2 = new Promise(function(resolve,reject){
                setTimeout(resolve,50,"second");
            })
    
    
            Promise.race([p1,p2]).then(function(val){   
                console.log(val)//second
            })
    var p1 = Promise.resolve(10);
    
            var p2 = Promise.resolve(p1);    //成功的promise里面可以传递一个成功的promise对象
    
            p2.then(function(data){
                console.log(data);//10
            })
  • 相关阅读:
    PHP $_GET 获取 HTML表单(Form) 或url数据
    dedecms {dede:php}标签用法介绍
    php 连接mysql实例代码
    php 常量、变量用法详细介绍
    mysql出现too many connections错误提示
    支持中文字母数字、自定义字体php验证码程序
    我的LinqToSql学习笔记(1)
    使用Git新建项目 (命令行)
    使用SQL Server Profiler
    sqlserver2008 中使用 表值 参数
  • 原文地址:https://www.cnblogs.com/xuhanghang/p/10477955.html
Copyright © 2011-2022 走看看