美文网首页
ECMAScript 6 新起点

ECMAScript 6 新起点

作者: 夜息白鸽 | 来源:发表于2017-08-24 11:56 被阅读0次
    无人机.png

    基本简介:

    ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现。各大浏览器的最新版本,对 ES6 的支持可以查看kangax.github.io/es5-compat-table/es6/。随着时间的推移,支持度已经越来越高了,超过90%的 ES6 语法特性都实现了!


    这里给大家推荐一个ES6转成ES5的Babel 转码器。
    方便之前会ES5的人学习ES6,方便转码查看原理。阮一峰大神对ES6的介绍

    下载Babel指令:

    npm install --save-dev babel-cli babel-preset-env

    Create a .babelrc file (or use your [package.json]
    (在你的.babelrc 文件里面 添加下面内容)
    {
    "presets": ["env"]
    }
    若还未看懂的可以到官网上好好查看文档
    点击传送门


    ES6新增属性:

    1 let 属性

    ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

    { let a=8;
     var b=1;
    }
    a//.  a is not defind.
    b//1
    

    上面代码在代码块之中,分别用let和var声明了两个变量。然后在代码块之外调用这两个变量,结果let声明的变量报错,var声明的变量返回了正确的值。这表明,let声明的变量只在它所在的代码块有效。

    let 配合for

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

    上面的i是let定义的 每次循环。都会有自己一个新的变量,关键的是每次循环都会有自己的不同作用域。成功取到对应的值。换成是var 来定义的i。只能返回10

    不允许重复声明
    let不允许在相同作用域内,重复声明同一个变量。也不能在函数内部重新声明参数

    // 报错
    function () {
      let a = 10;
      var a = 1;
    }
    
    // 报错
    function () {
      let a = 10;
      let a = 1;
    }
    
    function func(arg) {
      let arg; // 报错
    }
    
    function func(arg) {
      {
        let arg; // 不报错
      }
    }
    
    2 块级作用域

    let实际上为 JavaScript 新增了块级作用域。
    块级作用域的出现,实际上使得获得广泛应用的立即执行函数表达式(IIFE)不再必要了。

    // IIFE 写法
    (function () {
      var tmp = ...;
      ...
    }());
    
    // 块级作用域写法
    {
      let tmp = ...;
      ...
    }
    
    3 const 命令

    const声明一个只读的常量。一旦声明,常量的值就不能改变。
    常用来存放地址,图片路径等。
    const声明的常量,也与let一样不可重复声明。(定义过了就不能在去定定义)

    // IIFE 写法
    var message = "Hello!";
    let age = 25;
    
    // 以下两行都会报错
    const message = "Goodbye!";
    const age = 30;
    

    相关文章

      网友评论

          本文标题:ECMAScript 6 新起点

          本文链接:https://www.haomeiwen.com/subject/fwisdxtx.html