变量
var num; // undefinedlet num1, num2; // 声明多个变量注:let 为 ES6 新增。
常量
const num = 42虽然 const 关键字限定了栈上的内容不可编辑,但堆上的内容可以编辑,因此对于引用类型来说,要使堆上的内容不可编辑,需要额外使用 readonly 关键字:
const object1 = { property1: 1 };const array1 = ["a", "b", "c"]object1.property1 = 2;array1[1] = "x";注:const 为 ES6 新增。
命名
- 可以以任意 Unicode 字母(含中文),以及美元符号($)和下划线(_)开头。
 - 非开头可以使用数字
 
注释
// 单行注释由两个左斜杆组成
/* 多行注释   由星号和左斜杆组成 */[[JavaScript]] 同样支持 [[HTML]] 风格注释 <!-- HTML 风格注释 JS 版本。
运算符
赋值
- 赋值:
= - 先加后赋值:
+= - 先减后赋值:
-= - 先乘后赋值:
*= - 先除后赋值:
/= 
算术运算符
- 加减乘除:
+, -, *, / - 取模(余数):
% - 取幂:
** - 自增:
++ - 自减:
-- 
自增和自检用在变量前是返回自增之后的值,用在变量之后将返回自增前的值。
字符串运算符
- 连接两边的字符串:
+ - 拼接字符串后在赋值给左侧变量:
+= 
比较运算符
- 相等和不等:
==!= - 绝对相等和不等:
===!== - 大于和小于:
> < - 大于或等于:
>= - 小于或等于:
<= 
=== 和 !== 除了比较值之外,还对类型进行比较。
一元运算符
- -:负号
 - +:加号,连接运算符
 - typeof:
(typeof num)// 输出:number - instanceof:判断对象是否是指定的类型,
obj instanceof number(类似 Python [[built-in-functions]] 方法) 
三元运算符
condition ? expr1 : expr2- expr1:condition 为 True 时执行
 - expr2:condition 为 False 时执行
 
逻辑运算符
- and:
&& - or:
|| - not:
! 
类型运算符
- 返回变量类型:
typeof - 检查变量是否为指定类型:
instanceof 
流程控制
条件语句
if
const count = 42;
// 单行if (count == 42) console.log("42")
if (count == 3){    // count 是 3 时执行} else if (count == 4){    // count 是 4 时执行,可以有多个} else {    // 其他情况下执行}switch
当执行语句有多行时,可以使用花括号标记范围,另外每个语句最后如果没有 break 语句,则会继续执行。
let today = 6
switch (today) {    case 1:        console.log("星期一");        break;    case 2:        console.log("星期二");        break;    case 6: {        console.log("星期六");        console.log("今天是休息日");    }        break;    case 7: {        console.log("星期日");        console.log("今天是休息日");    }        break;}另外 switch 语句中可以使用 default 关键字设定一个默认分支:
let today = 996;switch (today) {    case 1:    case 2:    case 3:    case 4:    case 5:        console.log("工作日");        break;    case 6:    case 7:        console.log("休息日");        break;    default:        console.log("此星期不存在!");        break;}循环语句
- break:跳出循环;
 - continue:跳过当前循环
 
for 循环
for (初始化语句; 条件; 递增表达式)  语句
// 或者for (let i = 0; i < 5; i++){    console.log('i 当前为:' + i);}- 初始化:初始值,在循环开始之前执行的代码;
 - 条件:每轮循环开始都执行一次,为 
true才继续; - 递增语句:循环的最后一个操作,通常用于递增变量
 
初始化语句和递增表达式都可以省略:
let i = 0for (; i < 4; ) {    i++;}所有 for 循环都可以改成 while 循环。
while 循环
// 单行while (true) console.log('无限循环');
while (true) {    // 无限循环}
let i = 0;while (i < 100) {  console.log('i 当前为:' + i);  i = i + 1;}do while 循环
do while 是 [[#while 循环]]的变体,循环至少会执行一次。
do {    console.log("executed!"); //输出"executed!"}while (false);数据类型
- 原始类型:
- boolean:布尔值
 - number
 - bigint
 - string
 - any
 - unknown
 - never
 
 - 引用类型(复合)
- array:数组
 - tuple:元组
 - function:函数
 - object:对象
 - class:类型
 
 - 进阶类型
- 泛型
 - 类型别名
 - 联合类型
 - 交叉类型
 
 
- 联合类型写法:
string | number 
原始数据类型
通常,数值、字符串、布尔值这三种类型,合称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。对象则称为合成类型(complex type)的值,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。至于undefined和null,一般将它们看成两个特殊值。
TS 原始数据类型为 JS 的小写形式:
| 原始数据类型 | JavaScript | TypeScript | 
|---|---|---|
| 字符串 | String | string | 
| 数值 | Number | number | 
| 布尔值 | Boolean | boolean | 
| 大整数 | BigInt | bigint | 
| 符号 | Symbol | symbol | 
| 不存在 | Null | null | 
| 未定义 | Undefined | undefined | 
// 字符串const str: string = 'Hello'// 字符串类型推导const str = 'Hello'ES6 新增两种类型:
- BigInt
 - Symbol
 
TS 独有的三种特殊类型:
- any
 - unknown
 - never
 
字符串
字符串拼接的几种方式:
// 反引号const number = 42const luckyNumber = `我的幸运数字:${number}`