2017-07-27 80 views
1
function basketPrice(product, vat, delivery) { 
    var total = product + vat + delivery; 
    delivery = 7.5; 
    vat = 20/100 * product; 

    return total 
} 

basketPrice(150); 

因此,只是爲了記錄,我開始在一週前查看JavaScript,所以請原諒任何愚蠢的錯誤或行話。簡單的練習功能顯示NaN

上面我試圖產生一個非常簡單的輸出。我相信這不是你在電子商務網站上製作籃子的方式,但這只是我用來幫助我練習的一個例子。

我以爲我有這樣的結果,直到我的結果是NaN(我知道意味着不是一個數字),但我不知道它與哪一點有關,爲什麼。

我正在尋找一個解釋(儘可能簡單)我錯了什麼地方。任何幫助表示讚賞。

預先感謝您。

+0

請發佈內嵌的代碼。我不能複製+編輯圖像:/ –

+0

完成,抱歉沒有想到這一點。 –

回答

2
function basketPrice(product, vat, delivery){ 
    console.log(product,vat,delivery);//150,undefined,undefined 

    var total=product + vat + delivery;//150+undefined is not a number 

delivery=7.5;//now its to late to change sth 
vat = 0.2 * product; 

return total; 
} 

basketPrice(150); 

您在計算總數後設置變量。因此,可以使用默認值和/或設置它們你計算總的面前:

function basketPrice(product, vat, delivery=7.5){ 

console.log(product,vat,delivery);//150,undefined,7.5 

vat = vat || 0.2 * product; 

var total=product + vat + delivery;// is a number 

return total; 
} 
basketPrice(150); 
basketPrice(1,2); 
basketPrice(1,2,3); 

如果你真的不想要這兩個是參數,它的更簡單:

function basketPrice(product){ 
return product * 1.2 + 7.5; 
} 

或短:

basketPrice=p=>p*1.2+7.5; 
+0

你在做什麼....什麼是val和什麼是增值稅 – Lekens

+0

你能解釋幾件事嗎?: - 爲什麼你使用參數val,它如何鏈接到增值變量? -Why你寫了vat = vat || (我認爲這意味着或),而不是隻是vat = 0.2 *產品? –

+0

@lekens哦,不,錯了什麼:/ –

0

你正在調用一個函數,它只需要一個參數即可得到3個參數,所以計算的總量l變成NaN(不是數字)。

0
function basketPrice(product, delivery) { 
vat = (20/100) * product; 
var total = product + vat + delivery; 
return total; 
} 
basketPrice(150,7.5); 
+1

你能否簡要解釋一下爲什麼你不要增加一個參數?是這樣你不必爲它設置一個參數? 也是唯一的價格會有所不同是該產品的。那麼我可以在函數內部聲明交付價格嗎?而不是使用一個參數? –

+0

@ 11-是的,如果它不是一個參數,不要通過它。 –

+0

@Jonas w道歉是一種痛苦,但你對這個問題一直很有幫助Jonas w,通過'通過'你的意思是不要讓它成爲一個參數? 謝謝。 –