if (条件表达式) { 代码块; } // 当条件表达式结果为true,会执行代码块;反之不执行 // 条件表达式可以为普通表达式 // 0、undefined、null、""、NaN为假,其他均为真
if 复杂语法:
// 1.双分支 if (表达式1) { 代码块1; } else { 代码块2; } // 2.多分支 if (表达式1) { } else if (表达式2) { } ... else if (表达式2) { } else { }
if 嵌套:
if (表达式1) { if (表达式2) { }... }...
switch (表达式) { case 值1: 代码块1; break; case 值2: 代码块2; break; default: 代码块3; } // 1.表达式可以为 整数表达式 或 字符串表达式 // 2.值可以为 整数 或 字符串 // 3.break可以省略 // 4.default为默认代码块,需要出现在所有case最下方,在所有case均未被匹配时执行
for (循环变量①; 条件表达式②; 循环变量增量③) { 代码块④; } // 1.循环变量可以在外、在内声明 // 2.执行逻辑 ① ②④③ ... ②④③ ②,入口为①,出口为②,②④③个数为[0, n]
while (条件表达式) { 代码块; }
do { 代码块; } while (条件表达式);
obj = {"name": "zero", "age": 8} for (k in obj) { console.log(k, obj[k]) } // 用于遍历对象:遍历的结果为key,通过[]语法访问对应的value
iter = ['a', 'b', 'c']; for (i in iter) { console.log(iter[i]) } // 1.用于遍历可迭代对象:遍历结果为index,通过[]语法访问对应的value // 2.ES6新增,可迭代对象有 字符串、数组、Map、Set、Anguments、NodeList等
try { 易错代码块; } catch (err) { 异常处理代码块; } finally { 必须逻辑代码块; } // 1.err为存储错误信息的变量 // 2.finally分支在异常出现与否都会被执行
function 函数名 (参数列表) { 函数体; } var 函数名 = function (参数列表) { 函数体; }
ES6
let 函数名 = (参数列表) => {
函数体;
}
匿名函数
function (参数列表) { 函数体; } // 匿名函数需要自调用 (function (参数列表) { 函数体; })(参数列表);
function fn (a, b, c) { console.log(a, b, c) // 100 undefined undefined } fn(100) function fn (a) { console.log(a) // 100 } fn(100, 200, 300) // 200,300被丢弃
可以任意位置具有默认值
function fn (a, b=20, c, d=40) { console.log(a, b, c, d) // 100 200 300 40 } fn(100, 200, 300)
通过...语法接收多个值
function fn (a, ...b) { console.log(a, b) // 100 [200 300] } fn(100, 200, 300) // ...变量必须出现在参数列表最后
function fn () { return 返回值; } // 1.可以空return操作,用来结束函数 // 2.返回值可以为任意js类型数据 // 3.函数最多只能拥有一个返回值