是否有理由不使用JavaScript对象文字来有条件地返回switch语句中的函数?

时间:2018-01-12 15:14:10

标签: javascript python if-statement switch-statement

我一直在考虑Python中缺少switch语句,并想知道使用Python字典的解决方法是否可以使用Object文字在JavaScript中以相同的方式处理?

在JavaScript中,我传统上看到switch语句甚至if / else语句用于有条件地返回函数。

switch(service) {
    case 'netflix':
        return netflix_service();
}....

我想知道你是否可以在JS中使用对象文字,这对我来说至少在语法上看起来更简洁。例如:

services = {
  netflix: netflix(),
  ...
};

但是有没有理由我继续通过对象文字方法看到switch语句或if / else语句?无论是表演还是惯例?

提前致谢。

1 个答案:

答案 0 :(得分:1)

使用if...elseswitch或函数字典之间没有明显的性能差异(但请参阅Pointy的第一条评论)。除非你把你的代码放在100万的循环中,否则它甚至都不值得谈论它。所以这一切都归结为代码可读性。对于两个以上的选项,switch和函数字典看起来比if...else好得多。考虑这两个片段:

switch(service) {
    case 'netflix':
        return netflix_service();
    case 'facebook':
        return facebook_service();
    case 'youtube':
        return youtube_service();
}

if(service == 'netflix')
        return netflix_service();
else if(service == 'facebook')
        return facebook_service();
else if(service == 'youtube')
        return youtube_service();

好消息是switch恰好也比if...else快。