2010-05-26 44 views
1

我的问题是,有没有办法让代码更高效或以简单的方式编写代码?顺便说一句。简化此代码的最佳方式,效率更高

switch (tempvar1) { 
    case 1: 
    currentSlide = 'slide1'; 
    showaslide('ppslide1'); 
    break; 
    case 2: 
    currentSlide = 'slide2'; 
    showaslide('ppslide2'); 
    break; 
    case 3: 
    currentSlide = 'slide3'; 
    showaslide('ppslide3'); 
    break; 
    case 4: 
    currentSlide = 'slide4'; 
    showaslide('ppslide4'); 
    break; 
    case 5: 
    currentSlide = 'slide5'; 
    showaslide('ppslide5'); 
    break; 
    case 6: 
    currentSlide = 'slide6'; 
    showaslide('ppslide6'); 
    break; 
    // 20 total cases 
} 

回答

10

这可以更优雅的完成:

if (tempvar1 <= 20) { 
    currentSlide = 'slide' + tempvar1; 
    showaslide('ppslide' + tempvar1); 
} 

在JavaScript中,如果与他们联合整数值将自动转换为字符串。 +运算符连接字符串。

编辑:你的评论问题后续,以检查是否tempvar是一个整数。一个方法可行此检查(也有其他修改围捕代码):

if (!isNaN(parseInt(tempvar1))) { 
    if (tempvar1 >= 1) && (tempvar1 <= 20) { 
    currentSlide = 'slide' + tempvar1; 
    showaslide('ppslide' + tempvar1); 
    } else { 
    // Some error handling or default case here if needed 
    // thx to eyelidlessness ;) 
    } 
} 

第一if语句试图把tempvar1为整数值,如果这个工程不仅延续。

+0

啊,它是如此简单。我怎么会说(如果(tempvar1是一个整数,并且小于20))?或者像这样的检查是没有必要的,因为如果它们与代码的任何部分混淆在一起,他们可能会混淆一切?是非常不安全的JavaScript? – Derek 2010-05-26 00:43:33

+1

+1,用于实际执行与问题中相同的功能(不同于其他几个彼此完全相同的答案)。还有一点就是,如果有一个'default'的情况,它将在这里的'else'中处理。 – eyelidlessness 2010-05-26 00:45:53

+0

关于检查的必要性:如果tempvar1来自用户输入,您应该使用检查并确保安全。但是,如果tempvar1是f.e.一些循环计数器,你完全知道,这是没有必要的。 – schnaader 2010-05-26 00:53:48

8
currentSlide = 'slide' + tempvar1; 
showaslide('ppslide' + tempvar1); 
2

如何:

currentSlide = 'slide' + tempvar1; 
showaslide('ppslide' + tempvar1); 
3

你不需要switch语句:

currentSlide = 'slide' + tempvar1; 
showaslide('ppslide' + tempvar1);