条件
三元运算符
// 语法
variablename = (condition) ? value1:value2
// 例
var sex = 1
var sexDesc = sex == 1 ? '男' : '女'
if、else、else if
if 语句
if 使用小写字母
// 语法
if (条件) {
如果条件为 true 时执行的代码
}
// 例
if(age > 18) {
return '已成年了'
}
else 语句
// 语法
if (条件) {
条件为 true 时执行的代码块
} else {
条件为 false 时执行的代码块
}
// 例
if(age > 18) {
return '已成年了'
} else {
return '未成年'
}
else if 语句
// 语法
if (条件 1) {
条件 1 为 true 时执行的代码块
} else if (条件 2) {
条件 1 为 false 而条件 2 为 true 时执行的代码块
} else {
条件 1 和条件 2 同时为 false 时执行的代码块
}
// 例
if(age > 18) {
return '已成年了'
} else if (age == 18) {
return '刚成年'
} else {
return '未成年'
}
Switch
switch 语句来选择多个需被执行的代码块之一。
通过 switch 中的表达式与每个 case 做对比,如果匹配就执行对应语句。
switch 表达式与 case 做比较是值与数据类型都必须相同===
break 关键词,如果 switch 表达式与 case 匹配就跳出 switch 语句。
defauklt 关键词,如果配不到 case 语句时执行
// 语法
switch(表达式) {
case n:
代码块
break;
case n:
代码块
break;
default:
默认代码块
}
//例
switch (new Date().getDay()) {
case 6:
text = "今天是周六";
break;
case 0:
text = "今天是周日";
break;
default:
text = "期待周末~";
}
循环
for
for 多次循环代码块
- 语句1 在循环前执行
- 语句2 循环条件
- 语句3 循环每次被执行后执行
// 语法
for (语句 1; 语句 2; 语句 3) {
要执行的代码块
}
// 例
for (var i = 0; i < 10; i++) {
console.log('我是第' + i + '号')
}
for/in
for/in遍历对象的属性- variable 对于每次迭代,下一个属性的值都会赋给变量。变量可以用 const、let 或 var 声明。
- iterable 拥有可迭代属性的对象
// 语法
for (variable in iterable) {
code block to be executed
}
// 例
var obj = {
name: '张三',
sex: '男',
age: 18
}
var keys = []
var values = []
for (key in obj) {
keys.push(key)
values.push(obj[key])
}
console.log(keys) // ["name", "sex", "age"]
console.log(values) // ["张三", "男", 18]
for/of
for/of 循环遍历可迭代对象的值
// 语法
for (variable of iterable) {
code block to be executed
}
// 例
var arr = ['A', 'B', 'C', 'D']
var str = ''
for (val of arr) {
str += val
}
console.log(str) // ABCD
for/in vs for/in
参考 www.jianshu.com/p/1f9948daf… 和 juejin.cn/post/684490…
for/in循环缺点:
- 数组的键名是数字,但是
for/in循环是以字符串作为键名“0”、“1”、“2”等等。 for/in循环不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键。- 某些情况下,
for/in循环会以任意顺序遍历键名。
for/of 循环优点:
- 与
for/in一样的简洁语法,但是没有for/in那些缺点。 - 不同于
forEach方法,它可以与break、continue和return配合使用。 - 提供了遍历所有数据结构的统一操作接口。
for/in遍历的是数组的索引(即键名),而for/of遍历的是数组元素值。 所以for/in更适合遍历对象,不要使用for/in遍历数组。
while
while 循环会一直循环代码块,只要指定的条件为 true。
// 语法
while (条件) {
要执行的代码块
}
// 例
var i = 10
while (i <= 10 && i > 0) {
console.log('我是第' + i + '名')
i--
}
do/while
// 语法
do {
要执行的代码块
}
while (条件);
// 例
var i = 10
do {
console.log('我是第' + i + '名')
i--
}
while (i <= 10 && i > 0)
跳出循环
break
break 语句会中断循环,并继续执行循环之后的代码。
如果没有标签引用,只能用于跳出一个循环或一个 switch。
for (var i = 1; i < 10; i++) {
if (i > 3) { break; }
console.log('我是第' + i + '名')
}
continue
continue 语句中断(循环中)的一个迭代,如果发生指定的条件。然后继续循环中的下一个迭代。
不论有无标签引用只能用于跳过一个迭代
for (var i = 1; i < 10; i++) {
if (i > 3) { continue; }
console.log('我是第' + i + '名')
}