zoukankan      html  css  js  c++  java
  • ES6简介

    ES6概念

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

    编写环境

    nodeJS是JavaScript语言的服务器运行环境,对ES6的支持度比浏览器高,我们通过安装nodeJS环境,可以体验更多的ES6特性。

    我们使用版本管理工具nvmw(Windows)来安装node,可以自由切换版本。

    环境支持

    Babel转码器可以吧ES6转化为ES5,这样我们可以用ES6编写程序而无需担心环境是否支持。

    新增了很多特性

    1. 增加了let命令,const命令,import命令和class命令
    2. 增加了块级作用域:内外层互不干扰,外层无法读取内层变量。
    3. ES6规定var 和function声明的变量属于全局对象的属性,let,const,class声明的全局变量不属于全局对象的属性
    4. 变量的解构赋值:ES6当中可以从数组、对象、字符串中提取值,按照位置的对应关系给变量赋值。
    5. Es6新增了Module模块的概念
    6. 还将Promise对象纳入了规范。避免层层嵌套的回调函数。提供了统一的接口,使得控制异步操作更加的容易
    7. 新增箭头函数,箭头左边是输入的参数,右边是进行的操作和返回的值。箭头函数使表达式更加的简洁。箭头函数当中的this指的的是定义时所在的对象而不是使用时所在的对象。这样我们在使用的时候就不会产生很多歧义了。
    8. 新增了许多操作数组的方法:Array.from(arrylikelist)把类数组对象和可枚举的对象转化为数组;比如我们用dom操作获得的nodelist不可以使用数组的原生方法,这时候可以使用Array.from()方法把它转化成数组。Array.of(1,2,4)把一组数值转化为数组。数组实例的find(fn)找出第一个符合条件的数组成员。findIndex(fn)返回第一个符合条件的数组成员的位置。[].fill(num)用定值填充数组。
    9. 新增了模板字符串:用反引号标识,可以当中普通字符使用,字符串中可以用${value}嵌入变量,带来了很多方便。

    变量声明: 

          let命令:用于声明变量,它所声明的变量只有在let命令所在的代码块才有效。let声明的变量不存在变量声明提升,必须在声明后使用。在块中存在let,const命令,这个区块对这些变量形成封闭作用域。不能够在声明之前使用变量:ES6规定不存在变量声明提升防止在变量声明之前就使用它,减少运行时的错误。let不允许在相同的作用域内重复声明一个变量。

         const命令:用于声明常量,一旦声明就不可修改。而且声明时必须赋值。也在声明的块当中有效。也不可重复声明,也不提升。

    块级作用域:内外层互不干扰,外层无法读取内层变量。

    ES5中只有全局作用域和函数作用域。比如for循环的括号里用var声明的变量泄漏为全局变量;ES6当中,用let声明变量只在块级作用域内有效。let实际上为JavaScript新增了块级作用域。

    块级作用域使得立即执行函数不再必要了。立即执行函数相当于一个块级作用域。

    ES5存在函数声明提升,而在ES6当中代码块中的函数不会影响到作用域的外部。

    Promise:

    ES6将Promsie纳入了规范,并原生提供了Promise对象

    promise对象用来传递异步操作的信息:它代表了一个未来才知道结果的事件,并且这个事件提供统一的API,可供进一步处理

    优点:避免层层嵌套的回调函数。它提供了统一的接口,使得控制异步操作更加的容易

    用promise对象实现AJAX操作
    var getJSON=function(url){
        var promise=new Promise(function(resolve,reject){
            //AJAX操作
            $.ajax({
                url:url,
                type:'GET',
                dataType:'json',
                success:function(data){
                    resolve(data);
                },
                error:function(xhr,textStatus){
                    reject(textStatus);
                }
            })
        })
    
        return promise;
    }
    getJSON('/post.json') /*这里是promise实例对象*/
        /*状态改变时的回调函数*/
        .then(
            //状态从pending进行中——resolved已完成时调用的函数
            function( /*从resolve传过来的数据*/ data) {
                //成功后执行的操作
                console.log(data);
            },
            //状态从pending进行中——rejected失败时调用的函数
            function( /*从reject传过来的数据*/ ) {
                //失败后的操作
                console.log(data);
            }
        )
  • 相关阅读:
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    205. Isomorphic Strings
    204. Count Primes
    203. Remove Linked List Elements
    201. Bitwise AND of Numbers Range
    199. Binary Tree Right Side View
    ArcGIS API for JavaScript 4.2学习笔记[8] 2D与3D视图同步
  • 原文地址:https://www.cnblogs.com/t1amo/p/6775174.html
Copyright © 2011-2022 走看看