条件与循环
条件与循环
条件
if
if
语句用于根据条件执行代码块。如果条件为 true
,则执行相应的代码块;否则,可以选择性地执行其他代码块
语法
if (condition) {
// 当 condition 为 true 时执行的代码块
} else if (anotherCondition) {
// 当 anotherCondition 为 true 时执行的代码块
} else {
// 当上述条件都不满足时执行的代码块
}
示例
let x = 5;
if (x > 5) {
console.log('x is greater than 5');
} else if (x === 5) {
console.log('x is equal to 5');
} else {
console.log('x is less than 5');
}
switch
switch
语句用于根据不同的条件执行不同的代码块。它比多重的 if...else if...else 更简洁
语法
switch (expression) {
case value1:
// 当 expression 的结果为 value1 时执行的代码块
case value2:
// 当 expression 的结果为 value2 时执行的代码块
// 其他 case
default:
// 当 expression 的结果不匹配任何 case 时执行的代码块
}
示例
let color = 'red';
switch (color) {
case 'red':
console.log('The color is red');
case 'blue':
console.log('The color is blue');
default:
console.log('The color is not red or blue');
}
注意事项
vino
的switch
语句和JavaScript
的有一些不同,vino
在每一个case
中不需要开发者进行break
操作,这是因为vino
的switch
语句不存在贯穿
的情况。
示例
let name = "1"
switch (name) {
case "1":
console.log("1");
case "2":
console.log("2");
case "3":
console.log("3");
default :
console.log("default");
}
在JavaScript中,上述代码的运行结果:1 2 3 default
在Vino中,上述代码的运行结果:1
循环
while
while
语句在给定条件为 true
时,重复执行指定的代码块。条件在执行循环体之前进行检查
语法
while (condition) {
// 循环体代码
}
示例
let count = 0;
while (count < 5) {
console.log(count);
count++;
}
// 输出: 0 1 2 3 4
do while
do...while
语句与 while
语句类似,但它先执行一次循环体,然后在每次循环结束后检查条件。如果条件为 true
,则重复执行循环体。
语法
do {
// 循环体代码
} while (condition);
示例
let count = 0;
do {
console.log(count);
count++;
} while (count < 5);
// 输出: 0 1 2 3 4
for
for
语句用于循环执行代码块,可以根据初始化条件、循环条件和迭代操作控制循环。它通常用于需要计数器的循环
语法
for (initialization; condition; iteration) {
// 循环体代码
}
示例
for (let count = 0; count < 5; count++) {
console.log(count);
}
// 输出: 0 1 2 3 4
for of
for-of
语句可以用来遍历用户自定义的array
、object
、map
、set
等,以及其他实现了迭代器协议的对象。vino
在JavaScript中的for-of
语法的基础上进行了扩展和增强,额外提供了索引的遍历能力,可以通过for (let [index, value] of arr)
获取。
1. 遍历数组
let fruits = ['apple', 'banana', 'cherry', 'durian'];
// 遍历数组对象
for (let value of fruits) {
console.log(value);
// 输出:
// apple
// banana
// cherry
// durian
}
// 遍历数组对象并获取索引
for (let [index, value] of fruits) {
console.log(index, value);
// 输出:
// 0 apple
// 1 banana
// 2 cherry
// 3 durian
}
2. 遍历Object
let obj = {
id: 1,
name: "vino",
birthday: "2024-04-01",
};
// 遍历属性值
for (let value of obj) {
console.log(value);
// 输出:
// 1
// vino
// 2024-04-01
}
// 遍历属性名和属性值
for (let [field, value] of obj) {
console.log(field, value);
// 输出:
// id 1
// name vino
// birthday 2024-04-01
}
3. 遍历Map
let map = new Map();
map.set('a', 'alpha');
map.set('b', 'beta');
map.set('g', 'gamma');
// 遍历value
for (let value of map) {
console.log(value);
// 输出:
// alpha
// beta
// gamma
}
// 遍历key和value
for (let [key, value] of map) {
console.log(`key:${key}, value:${value}`);
// 输出:
// key:a, value:alpha
// key:b, value:beta
// key:g, value:gamma
}
4. 遍历Set
let set = new Set();
set.add(1);
set.add("text");
set.add({id: 1, name: "vino", birthday: "2024-04-01"});
for (let value of set) {
console.log(value);
/*
输出:
1
text
{
id: 1,
name: vino,
birthday: 2024-04-01,
}
*/
}
提示
vino并不支持for-in
语法,提供了增强版的for-of
来实现JavaScript语言中的for-in
和for-of
的功能。