Variable Declaration

let 和 const 是 JavaScript 中变量声明的两个相对较新的概念。 正如我们之前提到的,let 在某些方面类似于 var,但允许用户避免用户在 JavaScript 中遇到的一些常见“陷阱”。

const 是 let 的增强,因为它可以防止重新分配给变量。

变量解构 - Array destructuring

let input = [1, 2];
let [first, second] = input;
console.log(first); // outputs 1
console.log(second); // outputs 2

这将创建两个名为 first 和 second 的新变量。 这相当于使用索引,但更方便:

first = input[0];
second = input[1];

同样适用于函数参数列表:

function f([first, second]: [number, number]) {console.log(first);console.log(second);
}
f([1, 2]);

可以配合 … 语法使用:

let [first, ...rest] = [1, 2, 3, 4];
console.log(first); // outputs 1
console.log(rest); // outputs [ 2, 3, 4 ]
let [, second, , fourth] = [1, 2, 3, 4];
console.log(second); // outputs 2
console.log(fourth); // outputs 4

Object destructuring

这在 SAP Spartacus 的源代码里比较多见。

let o = {a: "foo",b: 12,c: "bar",
};
let { a, b } = o;

这会从 o.a 和 o.b 创建新变量 a 和 b。 请注意,如果不需要,可以跳过 c。

请注意,我们必须用括号将这个语句括起来。 JavaScript 通常将 大括号 解析为块的开始。

您可以使用以下语法为对象中的其余项目创建变量…:

let { a, ...passthrough } = o;
let total = passthrough.b + passthrough.c.length;

给属性设置别名

let { a: newName1, b: newName2 } = o;

这里的语法开始变得混乱。 您可以将 a:newName1 读作“a as newName1”。 方向是从左到右,和下列代码等价:

let newName1 = o.a;
let newName2 = o.b;

这里的冒号,及其容易同类型定义语法混淆起来。

Spread Operator

展开运算符与解构相反。 它允许您将一个数组扩展到另一个数组中,或者将一个对象扩展到另一个对象中。 例如:

let first = [1, 2];
let second = [3, 4];
let bothPlus = [0, ...first, ...second, 5];

这给 bothPlus 值 [0, 1, 2, 3, 4, 5]。 传播创建第一个和第二个的浅拷贝。 它们不会因 spread Operator 而改变。

spread 操作符也能应用在对象上:

let defaults = { food: "spicy", price: "$$", ambiance: "noisy" };
let search = { ...defaults, food: "rich" };

spread 后对象的值为:

{ food: "rich", price: "$$", ambiance: "noisy" }

和数组展开一样,它是从左到右进行的,但结果仍然是一个对象。 这意味着在扩展对象中较晚出现的属性会覆盖较早出现的属性。

Object 的 spread 操作符有一些局限性:

首先,它只包含对象自己的可枚举属性。 基本上,这意味着在传播对象实例时会丢失方法:

class C {p = 12;m() {}
}
let c = new C();
let clone = { ...c };
clone.p; // ok
clone.m(); // error!

TypeScript 的变量定义相关推荐

  1. C++ 笔记(05)— 变量(变量定义、声明、初始化、extern关键字、变量之间转换)

    1. 变量定义 变量定义就是告诉编译器在何处创建变量的存储,以及如何创建变量的存储.变量定义指定一个数据类型,并包含了该类型的一个或多个变量的列表,如下所示: type variable_list; ...

  2. Go 学习笔记(6)— 变量定义、变量声明、变量作用域

    1. 变量定义 Go 语言变量名由字母.数字.下划线组成,其中首个字符不能为数字.声明变量的一般形式是使用 var 关键字: var varName dataType [= value] Go 语言和 ...

  3. VS插件开发——格式化变量定义语句块

    插件介绍 代码地址:https://github.com/sun2043430/vs2008_format_variable_define_plugin/ 在vs里,对选中的变量定义块进行格式化,效果 ...

  4. 关于STM32的变量定义

    今天调试程序时,想观察一下变量的情况,突然发现平时经常移植别人程序时最容易忽略的一个致命问题,那就是忽略变量类型,这里有必要给大家一定知识啦,都是库里面的,非原创! 3.0以后的版本中使用了CMSIS ...

  5. 判断变量定义和变量为空问题

    变量定义和变量为空问题:jrhmpt01:/root# cat x1.pl my $xx=""; if (defined($xx)){print "111111111\n ...

  6. linux LANG变量 定义系统的主语系环境

    LANG 变量定义了 Linux系统的主语系环境,这个变量的默认值如下: [root@localhost src]# echo $LANG zh_CN.UTF-8 这是因为我们在安装 Linux 时选 ...

  7. 【Android 组件化】使用 Gradle 实现组件化 ( Gradle 变量定义与使用 )

    文章目录 一.顶层 Gradle 定义扩展变量 二.获取顶层的 Gradle 对象 三.Module 中使用 Gradle 变量 四.Gradle 中打印变量值 五.涉及到的 Gradle 构建脚本 ...

  8. 1、C语言面试笔试---变量定义和声明

    文章目录 1.背景 2.变量定义和声明 1.局部变量和全局变量 2.变量的存储类别 3.例题 4.内存泄漏 1.背景 2019秋招马上开始了,今天已经是7月30号了,赶紧刷刷C语言,争取在8月中旬刷完 ...

  9. C++阶段01笔记07【指针(基本概念、变量定义和使用、内存空间、空指针和野指针、const修饰指针、指针和数组、指针和函数)】

    C++| 匠心之作 从0到1入门学编程[视频+课件+笔记+源码] 目录 7 指针 7.1 指针的基本概念 7.2 指针变量的定义和使用 示例 7.3 指针所占内存空间 示例 7.4 空指针和野指针 示 ...

最新文章

  1. 《Android深入透析》之界面
  2. SQL Server多实例环境搭建与连接
  3. JavaScript之Ajax-1 Ajax(Ajax原理、Ajax对象属性和方法)
  4. Go database/sql 教程
  5. 摄像头网络安全如何保障
  6. Protel.DXP2004 电路板设计
  7. python爬虫获取数据失败请稍后访问_Python爬取微博评论数据,竟被反爬封号了!...
  8. randon变换(拉东变换)
  9. stm32L152 使用内部内部flash做EEPROM 出FLASH_ERROR_WRP问题及解决办法
  10. 《A Novel Approach to 3-D Gaze Tracking Using Stereo Cameras》论文阅读
  11. C++沙海拾遗(三)
  12. 医院信息管理系统源码 HIS系统源码
  13. Yii2实现手机二维码扫一扫登入
  14. vscode查看历史代码_VSCode中数据科学家的四大代码查看器
  15. springboot 健康饮食管理系统
  16. MFC CMFCToolBar静态工具栏和动态工具栏,加载自定义图片(真彩透明)
  17. 2021会宁三中高考成绩查询,2021年白银中考录取分数线查询
  18. php论文提答辩问题,论文答辩导师一般会问什么问题
  19. 网络工程师 考试命令合集 交换机、路由器、ACL、NAT、防火墙等配置命令
  20. 《心流》| 自得其乐的人生

热门文章

  1. nginx proxy cache配置参数解读
  2. 如何禁止普通用户通过rsh登陆计算节点
  3. 开学测试代码——需求征集系统
  4. java.lang.Object错误
  5. Vue.js的计算属性
  6. 利用CGLib实现动态代理实现Spring的AOP
  7. 湖人豪华助教团散伙 德帅身边恐仅剩两名帮手
  8. FCKeditor2.3 For PHP 详细整理的使用参考
  9. N85通过wifi共享笔记本电脑网络的方法
  10. sklearn自学指南(part17)--稳健回归-异常值和建模误差