条件与循环

条件与循环

条件

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');
}

注意事项

vinoswitch语句和JavaScript的有一些不同,vino在每一个case中不需要开发者进行break操作,这是因为vinoswitch语句不存在贯穿的情况。

示例

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语句可以用来遍历用户自定义的arrayobjectmapset等,以及其他实现了迭代器协议的对象。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-infor-of的功能。

更新时间 9/26/2024, 6:49:27 PM