zoukankan      html  css  js  c++  java
  • ES6 常用总结——第一章(简介、let、const)

    ES6整理

    1. ECMAScript 6简介

    ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。

    2. let const 命令

    2.1. Let 命令

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

    for (let i = 0; i < 3; i++) {
      let i = 'abc';
      console.log(i);
    }
    

      

    2.1.1. 不允许重复声明

    let不允许在相同作用域内,重复声明同一个变量。

    // 报错
    
    function () {
    
      let a = 10;
    
      var a = 1;
    
    }
    
    // 报错function () {
    
      let a = 10;
    
      let a = 1;
    
    }
    
     
    

      

    2.1.2. ES6 块级作用域

    let实际上为 JavaScript 新增了块级作用域。

    function f1() {
    
      let n = 5;
    
      if (true) {
    
        let n = 10;
    
      }
    
      console.log(n); // 5}
    

      

    上面的函数有两个代码块,都声明了变量n,运行后输出5。这表示外层代码块不受内层代码块的影响。如果使用var定义变量n,最后输出的值就是10

    注意:应该避免在块级作用域内声明函数。如果确实需要,也应该写成函数表达式,而不是函数声明语句。

    // 函数声明语句{
    
      let a = 'secret';
    
      function f() {
    
        return a;
    
      }}
    
    // 函数表达式{
    
      let a = 'secret';
    
      let f = function () {
    
        return a;
    
      };}
    

      

    另外,还有一个需要注意的地方。ES6 的块级作用域允许声明函数的规则,只在使用大括号的情况下成立,如果没有使用大括号,就会报错。

    // 不报错
    
    'use strict';
    
    if (true) {
    
      function f() {}
    
    }
    
    // 报错'use strict';
    
    if (true)
    
      function f() {}
    
     
    

      

    2.2. const 命令

    2.2.1. 示例讲解

    const声明一个只读的常量。一旦声明,常量的值就不能改变。

    const PI = 3.1415;
    
    PI // 3.1415
    
    PI = 3;
    
    // TypeError: Assignment to constant variable.
    

      

    上面代码表明改变常量的值会报错。

    const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

    const foo;
    
    // SyntaxError: Missing initializer in const declaration
    
    上面代码表示,对于const来说,只声明不赋值,就会报错。
    
    const的作用域与let命令相同:只在声明所在的块级作用域内有效。
    
    if (true) {
    
      const MAX = 5;}
    
     
    
    MAX // Uncaught ReferenceError: MAX is not defined
    

      

    const命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。

    if (true) {
    
      console.log(MAX); // ReferenceError  const MAX = 5;}
    

      

    上面代码在常量MAX声明之前就调用,结果报错。

    const声明的常量,也与let一样不可重复声明。

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

      

    2.2.2. ES6 声明变量的六种方法

    ES5 只有两种声明变量的方法:var命令和function命令。ES6除了添加letconst命令,后面章节还会提到,另外两种声明变量的方法:import命令和class命令。所以,ES6 一共有6种声明变量的方法。

    2.3. 数组的解构赋值

    ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。

    ES6允许写成下面这样。

    let [a, b, c] = [1, 2, 3];
    
    console.log("a="+a+",b="+b+",c="+c);
    
      //a=1,b=2,c=3
    
     
    

      

    2.4. 对象的解构赋值

    解构不仅可以用于数组,还可以用于对象。

    let { foo, bar } = { foo: "aaa", bar: "bbb" };
    
    console.log("foo="+foo+"__bar="+bar);
    
    //foo=aaa__bar=bbb
    

      

    字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。

    const [a, b, c, d, e] = 'hello';
    
    console.log(a+"__"+b+"__"+c+"__"+d+"__"+e);
    
                //h__e__l__l__o
    
    类似数组的对象都有一个length属性,因此还可以对这个属性解构赋值。
    
    let {length : len} = 'hello';
    
    len // 5
    

      

    提取JSON数据

    解构赋值对提取JSON对象中的数据,尤其有用。

    let jsonData = {
    
      id: 42,
    
      status: "OK",
    
      data: [867, 5309]};
    
    let { id, status, data: number } = jsonData;
    
    console.log(id, status, number);
    
    // 42, "OK", [867, 5309]
    

      

     

  • 相关阅读:
    欧拉回路 定理
    UESTC 1087 【二分查找】
    POJ 3159 【朴素的差分约束】
    ZOJ 1232 【灵活运用FLOYD】 【图DP】
    POJ 3013 【需要一点点思维...】【乘法分配率】
    POJ 2502 【思维是朴素的最短路 卡输入和建图】
    POJ 2240 【这题貌似可以直接FLOYD 屌丝用SPFA通过枚举找正权值环 顺便学了下map】
    POJ 1860【求解是否存在权值为正的环 屌丝做的第一道权值需要计算的题 想喊一声SPFA万岁】
    POJ 1797 【一种叫做最大生成树的很有趣的贪心】【也可以用dij的变形思想~】
    js 实现slider封装
  • 原文地址:https://www.cnblogs.com/dinghouchuanqi/p/7007946.html
Copyright © 2011-2022 走看看