2016-07-16 43 views
0

我不知道這兩個代碼塊是如何執行的,它們有不同的輸出,如果在第一個塊上,我必須使用else,如果是這樣,哪個更快?(else)if和||工作,哪個更好?

demo

var output = 0; 
 
for (var n = 0; n < 100; n++) { 
 

 
    if (n % 3 === 0) { 
 
    output += n; 
 
    } 
 
    if (n % 5 === 0) { 
 
    output += n; 
 
    } 
 
} 
 
console.log(output); 
 

 
/* ------------------------- */ 
 

 
var sum = 0; 
 
for (var x = 0; x < 100; x++) { 
 
    if (x % 3 === 0 || x % 5 === 0) { 
 
    sum += x; 
 
    } 
 
} 
 
console.log(sum);

+4

第一個執行這個語句'output + = n; '如果一個數字可以被3和5整除,那麼就是兩次。第二個不是。你需要哪一個? – gurvinder372

+0

他們將工作相同,如果你添加其他 – mplungjan

+0

@gurvinder我在想哪個更有效,否則如果或|| ? –

回答

0

如果你在第一個塊中使用else if而不是第二if,你應該得到相同的結果。 例如,n=15

    中的代碼的第一個塊
    1. 你檢查n%3 === 0爲真,所以output提高15
    2. 你檢查n%5 === 0爲真,所以output增加15再次
  • 第二塊代碼:
    1. 你檢查n%3 === 0是真實的,沒有其他的檢查都做了,sum提高15
  • 如果你使用 else if
    1. 你檢查n%3 === 0是真實的,所以output提高15
    2. 沒有其他檢查完成

我相信||else if速度是相當相同的。希望它有幫助

0

在代碼的第一個塊,對於由15(3最小公倍數和5)中,獲取添加兩次總和整除的數字。

在第二個代碼塊中,聲明。如果它的倍數是15,只能添加一次。

檢查第三塊代碼,我補充說。我只是在尋找15的倍數的總和。看看你正在發現的確切差異。

var output = 0; 
 
for (var n = 0; n < 100; n++) { 
 

 
    if (n % 3 === 0) { 
 
    output += n; 
 
    } 
 
    if (n % 5 === 0) { 
 
    output += n; 
 
    } 
 
} 
 
console.log(output); 
 

 
/* ------------------------- */ 
 

 
var sum = 0; 
 
for (var x = 0; x < 100; x++) { 
 
    if (x % 3 === 0 || x % 5 === 0) { 
 
    sum += x; 
 
    } 
 
} 
 
console.log(sum); 
 
/* ------------------------- */ 
 
sum = 0; 
 
for (x = 0; x < 100; x++) { 
 
    if (x % 15 === 0) { 
 
    sum += x; 
 
    } 
 
} 
 
console.log(sum);