2015-06-02 79 views
0

我工作的一個攝氏華氏功能在JavaScript和JavaScript錯誤輸出我寫了這個代碼:在瀏覽器

<!DOCTYPE html> 
<html> 
<head> 
<title>Celius to Fahrenheit Converter</title> 
</head> 
<body> 

<script type="text/javascript"> 

alert("Welcome"); 

function tempConverter() { 
var degCent = prompt("Enter the degrees in Farenheit", 50) 
var degFahren; 

degFahren = 9/5 * (degCent + 32); 

alert(degFahren); 

} 

tempConverter(); 

</script> 

</body> 
</html> 

我試着用50作爲默認值,當我將它轉換顯示9057.6代替122.任何想法?

+4

['提示() '](https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt)返回一個字符串和['+'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Addition)也會執行連接('「50」+ 32 ===「5032」')。 [在JavaScript中將字符串轉換爲數字的最快方法是什麼?](http://stackoverflow.com/questions/12862624/whats-the-fastest-way-to-convert-string-to-number-in-javascript) –

回答

2

您需要輸入轉換爲整數 -

var degCent = parseInt(prompt("enter", 50) , 10);

1

degCent值被視爲字符串。 JavaScript的計算表達式時確實有益字符串連接

(degCent + 32) = "5032" 

開始做乘法和除法它然後將上述結果轉換爲數字做算術只有當。這是Javascript的一個意想不到的(但記錄在案的)行爲。

爲了解決這個問題,迫使degCent值通過執行類似是一個數:

(+degCent + 32) 

前導+字符串"50"轉換爲數字之前加入32

+0

感謝指出,我只是困惑,爲什麼它把它當作一個字符串,當我的華氏攝氏功能的代碼工作正常?我有它的確切代碼,只有方程是不同的.. – defc0de

+0

因爲 JavaScript有啞類型處理。你只需要處理它,Javascript現在還不能確定。 –

+0

哈哈,好吧,我明白。作爲初學者,它只是讓我如此困惑。無論如何感謝所有的幫助。 – defc0de