码迷,mamicode.com
首页 > 其他好文 > 详细

EAMCSCRIPT6

时间:2019-03-19 12:04:18      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:get   after   对象   val   tin   png   block   9.png   归类   

1.  知识全景图

技术图片

 

 

2. ES6简要知识归类

2.1. 概述
ECMAScript 6 目前基本成为业界标准,它的普及速度比 ES5 要快很多,主要原因是现代浏览器对 ES6 的支持相当迅速,尤其是 Chrome 和 Firefox 浏览器,已经支持 ES6 中绝
大多数的特性。

2.2. let、const 和 block 作用域

 2.2.1. let 允许创建块级作用域,ES6 推荐在函数中使用 let 定义变量,而非 var:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script>
    var a = 2; //var 全局变量,使用var声明的变的作用域或提升
    {
      let a = 3;  //let 具有块级作用域
      console.log("let: "+a); //3
    }
    console.log("var: "+a); //2 
  </script>
</head>
<body>

</body>
</html>

2.2.2. const

同样在块级作用域有效的另一个变量声明方式是 const,它可以声明一个常量。ES6 中,const 声明的常量类似于指针,它指向某个引用,也就是说这个「常量」并非一成不变的,如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script>
    {
      const  ARR = [5,6];
      console.log("before: " + ARR); //[5,6]
      ARR.push(7);
      console.log("after: " + ARR); //[5,6,7]
      //ARR = 10;  报错了,语法变得严格了,提示已经命名变量了。 typeError
     }
  </script>
</head>
<body>

</body>
</html>
有几个点需要注意:

    let 关键词声明的变量不具备变量提升(hoisting)特性
    let 和 const 声明只在最靠近的一个块中(花括号内)有效
    当使用常量 const 声明时,请使用大写变量,如:CAPITAL_CASING
    const 在声明时必须被赋值

2.3. 箭头函数(Arrow Functions)

ES6 中,箭头函数就是函数的一种简写形式,使用括号包裹参数,跟随一个 =>,紧接着是函数体

var getPrice = function() {
  return 4.55;
};
 
// Implementation with Arrow Function
var getPrice = () => 4.55;

传统写法:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script>
    var getPrice = function() {
      return 4.55;
    };
    console.log(getPrice());
  </script>
</head>
<body>

</body>
</html>

箭头函数写法:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script>
    // var getPrice = function() {
    //   return 4.55;
    // };
    // console.log(getPrice());

    let getPrice = () => 4.55 // ()代表函数参数,=>后面代表函数体
    console.log(getPrice());

  </script>
</head>
<body>

</body>
</html>
技术图片
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script>
    // var getPrice = function() {
    //   return 4.55;
    // };
    // console.log(getPrice());

    let getPrice = () => 4.55;
    console.log(getPrice());

    let getSum = (a,b) => a+b;
    console.log(getSum(2,3));

  </script>
</head>
<body>

</body>
</html>

技术图片

 需要注意的是,上面例子中的 getPrice 箭头函数采用了简洁函数体,它不需要 return 语句,下面这个例子使用的是正常函数体:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script>
    // var getPrice = function() {
    //   return 4.55;
    // };
    // console.log(getPrice());

    let getPrice = () => 4.55;
    console.log(getPrice());

    let getSum = (a,b) => a+b;
    console.log(getSum(2,3));

    let arr = [apple,banana,orange];
    let breakfast = arr.map(fruit => {
      return fruit + s;
    });
    console.log(breakfast);

  </script>
</head>
<body>

</body>
</html>
技术图片

当然,箭头函数不仅仅是让代码变得简洁,函数中 this 总是绑定总是指向对象自身。具体可以看看下面几个例子:

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script>
    // var getPrice = function() {
    //   return 4.55;
    // };
    // console.log(getPrice());

    let getPrice = () => 4.55;
    console.log(getPrice());

    let getSum = (a,b) => a+b;
    console.log(getSum(2,3));

    let arr = [apple,banana,orange];
    let breakfast = arr.map(fruit => {
      return fruit + s;
    });
    console.log(breakfast);

    function person() {
      this.age = 0;

      setInterval(function growUp() {
        //非严格模式下,growUp()函数的this指向window对象
        this.age++;
      },1000);
    }
    var person = new person();
    console.log(person);

  </script>
</head>
<body>

</body>
</html>

我们经常需要使用一个变量来保存 this,然后在 growUp 函数中引用

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script>
    // var getPrice = function() {
    //   return 4.55;
    // };
    // console.log(getPrice());

    // let getPrice = () => 4.55;
    // console.log(getPrice());
    //
    // let getSum = (a,b) => a+b;
    // console.log(getSum(2,3));
    //
    // let arr = [‘apple‘,‘banana‘,‘orange‘];
    // let breakfast = arr.map(fruit => {
    //   return fruit + ‘s‘;
    // });
    // console.log(breakfast);

    // function person() {
    //   this.age = 0;
    //
    //   setInterval(function growUp() {
    //     //非严格模式下,growUp()函数的this指向window对象
    //     this.age++;
    //   },1000);
    // }
    // var person = new person();
    // console.log(person);

    function Person() {
      var self = this;
      self.age = 0;

      setInterval(function growUp() {
        self.age++;
      },1000);
    }

    // function Person() {
    //   this.age = 0;
    //
    //   setInterval(()=>{
    //     // \this\ 指向person对象
    //     this.age++;
    //   },1000);
    // }

    var person = new Person();
    console.log(person.age);
  </script>
</head>
<body>

</body>
</html>

而使用箭头函数可以省却这个麻烦:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script>
    // var getPrice = function() {
    //   return 4.55;
    // };
    // console.log(getPrice());

    // let getPrice = () => 4.55;
    // console.log(getPrice());
    //
    // let getSum = (a,b) => a+b;
    // console.log(getSum(2,3));
    //
    // let arr = [‘apple‘,‘banana‘,‘orange‘];
    // let breakfast = arr.map(fruit => {
    //   return fruit + ‘s‘;
    // });
    // console.log(breakfast);

    // function person() {
    //   this.age = 0;
    //
    //   setInterval(function growUp() {
    //     //非严格模式下,growUp()函数的this指向window对象
    //     this.age++;
    //   },1000);
    // }
    // var person = new person();
    // console.log(person);

    // function Person() {
    //   var self = this;
    //   self.age = 0;
    //
    //   setInterval(function growUp() {
    //     self.age++;
    //   },1000);
    // }

    function Person() {
      this.age = 0;

      setInterval(()=>{
        // \this\ 指向person对象
        this.age++;
      },1000);
    }

    var person = new Person();
    console.log(person.age);
  </script>
</head>
<body>

</body>
</html>

 2.3. 函数参数默认值

 

 

 

 

 

EAMCSCRIPT6

标签:get   after   对象   val   tin   png   block   9.png   归类   

原文地址:https://www.cnblogs.com/xkjlive/p/10557668.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!