zoukankan      html  css  js  c++  java
  • 深入理解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. 可将对象内部属性设置为只读。

    四、解构

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

  • 相关阅读:
    将excel单元格中的内容,批量转化成批注
    装饰器的入门到精通
    自定义dict
    python2.7 + PyQt4安装
    一些好用的python模块
    人工智能-自然语言处理
    websocket-单群聊
    UA池和代理池
    scrapy框架持久化存储
    SQL Server 2012 酸爽的安装体验
  • 原文地址:https://www.cnblogs.com/hackftz/p/13750537.html
Copyright © 2011-2022 走看看