2014-02-28 50 views
-2
function multiple(){ 
    var arr=[] 
    for (var i =0; i<1000;i++){ 
    (i%3==0 || i%5==0) : arr.push(i) ? continue 
    } 
    return arr.reduce(function(sum,i){sum+=i;return sum}) 
} 
console.log(multiple()) 

錯誤發現的3和5的倍數時:JavaScript語法錯誤在1000

(i%3==0 || i%5==0) : arr.push(i) ? continue 
        ^
SyntaxError: Unexpected token : 
+2

這篇文章的標題應該是「3或5」而不是「3和5 「 –

回答

1

的語法錯誤是因爲你需要扭轉:和?寫一個適當的三元運算符

(i%3==0 || i%5==0) ? arr.push(i) : continue 

雖然說實話,你真的不需要三元運算符無論如何,因爲這將是你的循環的唯一線路。繼續會有效地跳過任何內容,實際上正如指出的那樣不能用作表達式。

只需使用一個基本條件

if(i%3==0 || i%5==0) { 
    arr.push(i); 
} 
+0

這不會解決問題,因爲」繼續「是一個陳述,而不是表達式。 – Pointy

+0

這樣做的另一個更JavaScript的方式是'(I%3 ||我5%)&& arr.push(I);' –

+1

爲什麼是 '更多的JavaScript',不是事實其他的JavaScript將允許正常工作?似乎是不必要的複雜性 – Rich

0

既然你只是返回的總和,你可以簡單地做

function multiple() { 
    var sum = 0; 
    for(var i=0 ; i<1000 ; ++i) if(i%3==0 || i%5==0) sum += i; 
    return sum; 
}