[英]Why Am I Getting An NaN Error For My JavaScript Code Arithmetic Equation
[英]Javascript - Why am I Getting NAN error with my function
<script type="text/javascript">
var sheep = prompt("How many sheeps do we have in the park?");
var rangers = prompt("How many rangers do we have in the park?");
function feedPerRanger (sheep, rangers) {
alert("Each Park Ranger should load " + sheep*2/rangers +
" lb(s) of feed into his/her BART today.");
}
feedPerRanger ();
</script>
你好
我還是初學者,所以這可能是一個新手的錯誤。 該腳本用於提醒用戶每個公園護林員想要加載到他/她的BART上的飼料量。 假設每只綿羊2磅,除以游俠數量。 我一直收到以下NAN錯誤。 有誰能解釋為什么?
“每個公園護林員今天應該將NaN lb(s)的飼料加載到他/她的BART中。”
改變這個:
function feedPerRanger (sheep, rangers) {
alert("Each Park Ranger should load " + sheep*2/rangers + " lb(s) of feed into his/her BART today.");
}
有了這個:
function feedPerRanger () {
alert("Each Park Ranger should load " + sheep*2/rangers + " lb(s) of feed into his/her BART today.");
}
現在它有效; 但是(在我看來)這不是做你想做的更好的方法。
您可以正確使用您的函數,傳遞兩個通用參數如下:
function feedPerRanger(sheep, rangers) {
alert("Each Park Ranger should load " + sheep*2/rangers + " lb(s) of feed into his/her BART today.");
}
var sheep = prompt("How many sheeps do we have in the park?");
var rangers = prompt("How many rangers do we have in the park?");
feedPerRanger(sheep, rangers);
編輯 - 正如Ian 建議更改參數的名稱。
您應該將sheep
和rangers
變量傳遞給函數。 你還應該檢查它們是否包含數字。 考慮一下:
var sheep = prompt("How many sheeps do we have in the park?");
// sheep = "some random string";
// alert ( sheep / 2 );
我可以按“h”或寫任何我想要的東西。 從MDN看一下prompt
result(of prompt)是一個包含用戶輸入的文本的字符串,或者值為null。
所以添加一點檢查變量是不是isNaN
的數字,如下所示:
isNaN(sheep)
此外,我可以在提示中按取消 ,然后綿羊或游俠將為null
。 如果你改變這樣的功能,將沒有機會再有另一個NaN
:
function feedPerRanger(sheep, rangers) {
if ((sheep && !isNaN(sheep)) && (rangers && !isNaN(rangers))) {
alert("Each Park Ranger should load " + sheep * 2 / rangers +
" lb(s) of feed into his/her BART today.");
} else {
alert("please use numbers");
}
}
var sheepCount = prompt("How many sheeps do we have in the park?");
var rangersCount = prompt("How many rangers do we have in the park?");
feedPerRanger(sheepCount, rangersCount);
您的函數定義接受兩個參數。
function feedPerRanger (sheep, rangers)
你沒有給你打電話:
feedPerRanger ();
(此外,函數名稱和括號之間沒有空格)
在創建函數定義時,您將為局部變量指定名稱。 也就是說, sheep
和ranger
是傳遞給參數的名稱,因此它們可以在函數中使用。 因此,當您創建函數定義時, sheep
和ranger
不是您在上面創建的變量。
有兩種方法可以解決這個問題。
從函數定義中刪除參數:
function feedPerRanger(){...}
將變量作為參數傳遞給函數:
function feedPerRanger(numSheep, numRangers){ alert("Each Park Ranger should load " + numSheep*2/numRangers + " lb(s) of feed into his/her BART today."); } feedPerRanger(sheep, rangers)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.