if
javascript
if (condition1) {
// 语句1
} else if (condition2) {
// 语句2
} else {
// else语句
}
switch
javascript
switch (expression) {
case label1: // 如果label1匹配,则执行
// ...
// 语句1
// ...
break; // 可省略
case label2:
case label3: // 如果label2或label3匹配,则执行
// ...
// 语句23
// ...
break; // 可省略
default:
// 默认语句
}
条件表达式
javascript
condition ? expression1 : expression2
如果condition的为真值(转换后为true的值),则使用expression1作为该表达式的结果;否则,使用expression2。
有点像C和Java(静态语言类型)
For语句
javascript
for ([init]; [condition]; [update]) { # 初始化循环计数器;循环条件;更新计数器
statements
}
javascript
let sum = 0;
for (let i = 0; i < 10; i += 2) {
sum += i;
}
For-of语句
使用for-of语句可遍历数组或字符串
。示例如下:
javascript
for (forVar of expression) {
statements
}
While语句与Do-while语句
javascript
while (condition) {
statements
}
javascript
do {
statements
} while (condition)
Break语句与Continue语句
Throw和Try语句
throw语句用于抛出异常或错误
javascript
throw new Error('this error')
try语句用于捕获和处理异常或错误,支持finally语句。
javascript
try {
// 可能发生异常的语句块
} catch (e) {
// 异常处理
}finally{
//必须处理的
}
函数
函数声明引入一个函数,包含其名称、参数列表、返回类型和函数体。
javascript
function 函数名(参数类型): 返回类型{
函数体;
return 返回值;
}
如果可以从函数体内推断出函数返回类型,则可在函数声明中省略标注返回类型。
不需要返回值的函数的返回类型可以显式指定为void或省略标注。
例如
javascript
function 函数名(参数类型){
函数体;
return 返回值;
}
可选参数的格式可为name?: Type。
javascript
function hello(name?: string) {
if (name == undefined) {
console.log('Hello!');
} else {
console.log(`Hello, ${name}!`);
}
}
如果在函数调用中这个参数被省略了,则会使用此参数的默认值作为实参。
函数的最后一个参数可以是rest参数。
使用rest参数时,允许函数或方法接受任意数量的实参。
javascript
function sum(...numbers: number[]): number {
let res = 0;
for (let n of numbers)
res += n;
return res;
}
sum() // 返回0
sum(1, 2, 3) // 返回6
函数的作用域
函数的调用
函数类型
javascript
type trigFunc = (x: number) => number // 这是一个函数类型
function do_action(f: trigFunc) {
f(3.141592653589); // 调用函数
}
do_action(Math.sin); // 将函数作为参数传入
箭头函数(又名Lambda函数)
javascript
let 函数名 = (参数列表): 返回类型=> {
函数体;
return 返回值;
}
箭头函数的返回类型可以省略;省略时,返回类型通过函数体推断。
表达式可以指定为箭头函数,使表达更简短。
闭包
闭包是```由函数及声明该函数的环境组合而成的````。该环境包含了这个闭包创建时作用域内的任何局部变量。
在下例中,f函数返回了一个闭包,它捕获了count变量,每次调用z,count的值会被保留并递增。
javascript
function f(): () => number {
let count = 0;
let g = (): number => { count++; return count; };
return g;
}
let z = f();
z(); // 返回:1
z(); // 返回:2
函数重载
可以通过编写重载,指定函数的不同调用方式。
函数名相同
参数列表个数、类型不同/返回类型、个数不同/