变量
一个变量使用给定的符号名与内存中的某个存储地址相关联,并且可以容纳某个值。
命名规则:
- 允许包含字母、数字、下划线和美元符号‘$’。
- 允许包含Unicode转义序列,如“\u0069\u{6F}”。
- 不允许使用数字开头。
- 区分大小写。
- 不允许使用保留字作为标识符。
保留字:
变量声明:
- var声明
在声明时可以为变量赋值;未初始化时默认变量类型为undefined。var x = 0; var y; // undefined
- let声明
在声明时可以为变量赋值;未初始化时默认变量类型为undefined。let x = 0; let y; // undefined
- const声明
用于声明一个常量,,在定义时必须设置一个初始值。const声明在初始化后不允许重新赋值。const x = 0;
注:var声明的变量不具有块级作用域,而通过let和const声明的变量具有块级作用域。
注释
单行注释 //
多行注释
/*
...
*/
区域注释:定义代码折叠区域,当代码被折叠起来时,区域描述信息会显示出来
//#region 区域描述
let x =0;
//#endregion
数据类型
类型 | 例子 | 描述 |
---|---|---|
number | 1, -33, 2.5 | 任意数字 |
string | ‘hi’, “hi”, hi | 任意字符串 |
boolean | true、false | 布尔值true或false |
字面量 | 其本身 | 限制变量的值就是该字面量的值 |
any | * | 任意类型 |
unknown | * | 类型安全的any |
void | 空值(undefined) | 没有值(或undefined) |
never | 没有值 | 不能是任何值 |
object | {name:‘孙悟空’} | 任意的JS对象 |
array | [1,2,3] | 任意JS数组 |
tuple | [4,5] | 元素,TS新增类型,固定长度数组 |
enum | enum{A, B} | 枚举,TS中新增类型 |
字面量
字面量不是变量,是直接给出的固定值。
- Null字面量:只有一个,记作null.
- Boolean字面量:两个,记作true和false。
- Number字面量:包含四类,分别是二进制整数字面量、八进制整数字面量、十进制数字面量和十六进制整数字面量
- 字符串字面量:推荐使用单引号。
- 模板字面量:帮助开发者解决一些长久以来的痛点,如动态字符串的拼接和创建多行字符串等。使用反引号“`"(键盘上数字1左侧的按键)。
对象
对象是一种复合数据类型,由属性和方法构成。
对象字面量
又叫作对象初始化器,是最常用的创建对象的方法。
- 数据属性
对象字面量的数据属性由属性名和属性值组成,语法如下:{ PropertyName: PropertyValue, }
- 存储器属性
一个存储器属性由一个或两个存储器方法组成,存储器方法分为get方法和set方法两种。
get方法把属性访问绑定到一个函数调用上,用于获取一个属性值。
set方法把对象属性赋值绑定到一个函数调用上,当尝试给属性赋值时,set方法就会被调用。{ get PropertyName() { return PropertyValue; } set PropertyName(PropertyValue : typeOfPropertyValue) { this.PropertyName = v; } }
数组
数组表示一组有序元素的集合,使用数字作为元素索引值。
数组字面量
数组字面量是常用的创建数组的方法,使用一对中括号“[ ]”将数组元素包含在内,元素之间用逗号分隔:
const color = ['red', 'blue', 'green'];
函数
函数声明
function name(param0, param1, ...) {
body
}
函数表达式
除了函数声明以外,还可以使用函数表达式来定义一个函数。
函数表达式与函数声明的区别:
函数表达式中的函数名是可选的,而函数声明时函数名是必不可少的。当没有指定函数名时,该函数叫作匿名函数。
因为函数表达式属于表达式,而表达式能够产生一个值,因此函数表达式能够产生一个值,该值是一个函数。
函数表达式能够被应用到任何一个期待值的地方。
立即执行的函数表达式:
指的是在定义时就立即被调用的函数表达式,其常见的定义方式有以下两种:
;(function ()
{
// ...
}) ();
;(function () {
// ...
}());
小括号叫分组运算符,在分组运算符内部是一个表达式,将函数置于分组运算符之内时,该函数即成了函数表达式。若删除函数运算符,那么函数定义就成了函数声明。
在立即执行的函数表达式中,在起始位置和结尾位置分别添加了分号,这是为了防止使用代码压缩工具处理代码之后产生错误的语法。
立即执行的函数表达式和函数声明一样,都能够创建出新的作用域,同时,其自身对外部作用域没有任何影响。
箭头函数
用来定义匿名的函数表达式。箭头函数一定是匿名函数。
(param0, param1, ...) => { body}