2010-05-26 42 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);