zoukankan      html  css  js  c++  java
  • 【ES6】var、let、const三者的区别

    首先,一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系?

          ECMAScript是一个国际通过的标准化脚本语言。JavaScript由ECMAScript和DOM、BOM三者组成。可以简单理解为:ECMAScript是JavaScript的语言规范,JavaScript是ECMAScript的实现和扩展。

            2011 年,ECMAScript 5.1 版发布。之前我们大部分人用的也就是ES5

            2015 年 6 月,ECMAScript 6 正式通过,成为国际标准。

    1. 块级作用域 {}
            ES5 中作用域有:全局作用域、函数作用域。没有块作用域的概念。

             ES6 中新增了块级作用域。块作用域由 { } 包括,if语句和 for语句里面的{ }也属于块作用域。

    <script type="text/javascript">
        
        {
            var a = 1;
            console.log(a); // 1
        }
        console.log(a); // 1
        // 通过var定义的变量可以跨块作用域访问到。
     
        (function A() {
            var b = 2;
            console.log(b); // 2
        })();
        // console.log(b); // 报错,
        // 可见,通过var定义的变量不能跨函数作用域访问到
     
        if(true) {
            var c = 3;
        }
        console.log(c); // 3
        for(var i = 0; i < 4; i ++) {
            var d = 5;
        };
        console.log(i); // 4   (循环结束i已经是4,所以此处i为4)
        console.log(d); // 5
        // if语句和for语句中用var定义的变量可以在外面访问到,
        // 可见,if语句和for语句属于块作用域,不属于函数作用域。
     
    </script>

    2. var、let、const的区别

    1. var定义的变量,没有块的概念,可以跨块访问, 不能跨函数访问。
    2. let定义的变量,只能在块作用域里访问,不能跨块访问,也不能跨函数访问。
    3. const用来定义常量,使用时必须初始化(即必须赋值),只能在块作用域里访问,而且不能修改。
     1 <script type="text/javascript">
     2     // 块作用域
     3     {
     4         var a = 1;
     5         let b = 2;
     6         const c = 3;
     7         // c = 4; // 报错
     8         var aa;
     9         let bb;
    10         // const cc; // 报错
    11         console.log(a); // 1
    12         console.log(b); // 2
    13         console.log(c); // 3
    14         console.log(aa); // undefined
    15         console.log(bb); // undefined
    16     }
    17     console.log(a); // 1
    18     // console.log(b); // 报错
    19     // console.log(c); // 报错
    20  
    21     // 函数作用域
    22     (function A() {
    23         var d = 5;
    24         let e = 6;
    25         const f = 7;
    26         console.log(d); // 5
    27         console.log(e); // 6  
    28         console.log(f); // 7 
    29  
    30     })();
    31     // console.log(d); // 报错
    32     // console.log(e); // 报错
    33     // console.log(f); // 报错
    34 </script>
  • 相关阅读:
    关于求 p_i != i and p_i != i+1 的方案数的思考过程
    poj 3041 Asteroids 二分图最小覆盖点
    poj 1325 Machine Schedule 最小顶点覆盖
    poj 1011 Sticks 减枝搜索
    poj 1469 COURSES 最大匹配
    zoj 1516 Uncle Tom's Inherited Land 最大独立边集合(最大匹配)
    Path Cover (路径覆盖)
    hdu 3530 SubSequence TwoPoint单调队列维护最值
    zoj 1654 Place the Rebots 最大独立集转换成二分图最大独立边(最大匹配)
    poj 1466 Girls and Boys 二分图最大独立子集
  • 原文地址:https://www.cnblogs.com/qiaojun/p/9921769.html
Copyright © 2011-2022 走看看