条件 1 应执行任务 1、2、3、4、5 和 9。 条件 2 应执行任务 1、2、3、6、7 和 9。 条件 3 应该执行任务 8 和 9。
以下内容很容易阅读,但不会像第二个 condition1
和 condition2
任务那样执行,因为前面的 break
导致脚本退出 switch 语句。
var condition='condition1';
switch(condition) {
case 'condition1':
case 'condition2':
console.log('do task 1');
console.log('do task 2');
console.log('do task 3');
break;
case 'condition1':
console.log('do task 4');
console.log('do task 5');
break;
case 'condition2':
console.log('do task 6');
console.log('do task 7');
break;
case 'condition3':
console.log('do task 8');
break;
}
console.log('do task 9');
以下内容应该可行,但并不那么容易阅读,并且随着不同条件之间共享更多功能而变得越来越困难。
var condition='condition1';
switch(condition) {
case 'condition1':
case 'condition2':
console.log('do task 1');
console.log('do task 2');
console.log('do task 3');
switch(condition) {
case 'condition1':
console.log('do task 4');
console.log('do task 5');
break;
case 'condition2':
console.log('do task 6');
console.log('do task 7');
break;
}
break;
case 'condition3':
console.log('do task 8');
break;
}
console.log('do task 9');
同样,这应该可行,但为不同的组提供描述性名称会有问题。
var condition='condition1';
switch(condition) {
case 'condition1':
task_group_1_2_3();
task_group_4_5();
break;
case 'condition2':
task_group_1_2_3();
task_group_6_7();
break;
case 'condition3':
console.log('do task 8');
break;
}
console.log('do task 9');
function task_group_1_2_3() {
console.log('do task 1');
console.log('do task 2');
console.log('do task 3');
}
function task_group_4_5() {
console.log('do task 4');
console.log('do task 5');
}
function task_group_6_7() {
console.log('do task 6');
console.log('do task 7');
}
创建在不同情况条件之间共享某些脚本的 switch 语句的最简洁方法是什么?
最佳答案
您可以将条件移动到对象和任务中,并使用任务迭代数组。
您可以使用正确的名称而不是数字作为键名。
var tasks = {
1: function () { console.log(1); },
2: function () { console.log(2); },
3: function () { console.log(3); },
4: function () { console.log(4); },
5: function () { console.log(5); },
6: function () { console.log(6); },
7: function () { console.log(7); },
8: function () { console.log(8); },
9: function () { console.log(9); }
},
conditions = {
1: [1, 2, 3, 4, 5, 9],
2: [1, 2, 3, 6, 7, 9],
3: [8, 9]
},
condition = 1;
conditions[condition].forEach(function (a) { tasks[a](); });
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 在不同的 switch case 条件之间共享脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43068214/