zoukankan      html  css  js  c++  java
  • typeScrip(二)变量声明、解构

      const 是对 let 的一个增强,它能阻值对一个变量再次赋值。

      在 typeScript 中同样存在 var const let 而且对于他们的作用域,像函数作用域、块级作用域同样也是一样的

      重定义以及屏蔽

        类似于下面的情况:

    function fn(x) {
       var x = 1
       // let x = 1  
        console.log(x) 
    }
    fn(0)

        在运行函数 fn() 的时候,定义 var x = 1; 是可以有打印的,如果是 用 let x = 1; 这样就会报错,因为 let 的语法,要求在同一个块级作用域内不能用重复的变量,虽然 x 是一个形参,这也是不可以的;

        想要进行声明的话,我们可以采用 “屏蔽” 的方式就行处理,所谓的屏蔽就是:在一个嵌套作用域里引入一个新名字的行为; 利用屏蔽可以解决一些问题,但是一不小心也会引入新问题;例如:

    function fn(isTrue, x) {
       if (isTrue)  {
          let x = 1
          return x
        }  
        return x
    }  
    console.log(fn(true, 0))     // 1 
    console.log(fn(false, 0))    //  0
    

         利用 if 条件的  { }  形成一个新的块级作用域,这样就可以让 let 定义的变量名可以和形参一样了,这样的行为就是 “屏蔽”

      数组的结构

    let [a,b, ...c] = [1,2,3,4,5,6]
    console.log(a) // 1
    console.log(b) // 2
    console.log(c) // [3,4,5,6]
    
    let [,d,e] = [1,2,3,4,5]
    console.log(d)  // 2
    console.log(e)  // 3
    

       对象的结构

    let {a, b, c}  = {a: 1, b: 2}
    console.log(a)   //  1
    console.log(b)   //  2
    console.log(c)   //  undefined
    

         如果不用  let、const、var 的话,可以直接 ({a, b} = { a:1, b: 2})来进行对象的结构赋值;

         此外也可以在结构赋值的时候利用  ...  语法,例如: ({a, b, ...c} = {a: 1, b: 2}),这样就定义了一个新的对象 c = { }

  • 相关阅读:
    小白开学Asp.Net Core 《一》
    小白开学Asp.Net Core 开篇
    分享一个.NET平台开源免费跨平台的大数据分析框架.NET for Apache Spark
    微信支付退款中发现的一个问题
    发布mvc遇到的HTTP错误 403.14-Forbidden解决办法
    English--元音
    开发工具--浅谈Git
    开发工具--搭建python环境
    开发工具--PyCharm
    English--介词省略句型与总结
  • 原文地址:https://www.cnblogs.com/mufc/p/11213681.html
Copyright © 2011-2022 走看看