• 深入理解TypeScript——文档篇之变量声明


    一、var声明

        使用var的好处:公用变量,作用域下都可以获取到值。

        使用var的弊端:

    1. var声明可以在包含它的函数,模块,命名空间或全局作用域内部任何位置被访问,也就是说,var可以在其赋值前被访问(undefined),即使其定义在代码块内。

      function f(shouldInitialize: boolean) {
          if (shouldInitialize) {
              var x = 10;
          }
      
          return x;
      }
      
      f(true);  // returns '10'
      f(false); // returns 'undefined'
      
    2. var定义的变量可以重复定义,并且不会报错,所以会导致变量引用重叠。

      function sumMatrix(matrix: number[][]) {
          var sum = 0;
          for (var i = 0; i < matrix.length; i++) {
              var currentRow = matrix[i];
              for (var i = 0; i < currentRow.length; i++) {
                  sum += currentRow[i];
              }
          }
      
          return sum;
      }
      
    3. 如果var定义的变量在for循环外部,并且for循环中为异步的输出,则会先执行同步循环,最后再走异步回调,那这样的话获取到的值就会是变量的最终值。

      for (var i = 0; i < 10; i++) {
          setTimeout(function() { console.log(i); }, 100 * i);
      }
      

          一个通常的解决方法是使用立即执行的函数表达式(IIFE)来捕获每次迭代时i的值:

      for (var i = 0; i < 10; i++) {
          // capture the current state of 'i'
          // by invoking a function with its current value
          (function(i) {
              setTimeout(function() { console.log(i); }, 100 * i);
          })(i);
      }
      

    二、let声明

    1. 块作用域变量在包含它们的块或for循环之外是不能访问的。
    2. 不能在被声明之前读或写,直到声明它的代码之前的区域都属于 暂时性死区
    3. 不能在1个作用域里多次声明。
    4. 在一个嵌套作用域里,内层let定义的变量,会屏蔽外层let定义的变量。

    三、const声明

    1. 给变量赋值后不能再改变(基本类型对应的是值,复杂类型对应的是引用)。
    2. 不能重新赋值。
    3. 可将对象内部属性设置为只读。

    四、解构

        解构表达式要尽量保持小而简单。

  • 相关阅读:
    ZOJ2402 Lenny's Lucky Lotto List 简单DP
    HDU1024 最大M子段和问题 (单调队列优化)
    HDU2048 HDU2049 组合数系列 错排
    HDU1081 最大字段和 压缩数组(单调队列优化)
    HDU1166 数状数组
    HDU1085 多重背包
    HDU3062
    递归 递推 规律
    【机器学习PAI实战】—— 玩转人工智能之美食推荐
    阿里开源自用 OpenJDK 版本,Java 社区迎来中国力量
  • 原文地址:https://www.cnblogs.com/hackftz/p/13750537.html
Copyright © 2020-2023  润新知