當我試圖實現一個無止境的提示系統時,我注意到今天早上有些奇怪的事情。遞歸提示返回undefined
以下代碼返回下2個方案2個不同的輸出:
方案1:上第一提示和輸入數字確定
輸出1:number that was entered
情景2:取消第一提示然後輸入數字並確定
輸出2:undefined
我困惑,爲什麼發生這種情況。首先,當我在if語句中檢查時,它是如何返回的未定義的?第二,我的印象是,在JavaScript中未定義意味着一個變量已經被聲明,但尚未被分配,在這種情況下,我正在分配var number
。
var number = null;
number = Prompt();
$("p").html("Number was " + number);
function Prompt()
{
var input = prompt("Enter a number", "");
if(input === null || input === "" || input === undefined || isNaN(input))
Prompt();
else
return input;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p></p>
您應該提到,只有一個字符串是從'prompt'返回。如果'input'實際上是'NaN','isNaN('anystring')'將總是返回'true',而'Number.isNaN'只會返回'true'。推薦'parseInt'等。 – naomik
@naomik:不正確。 'isNaN(「」)=== false'我不知道它爲什麼返回false,但也許你可以嘗試'isNaN(parseFloat(input))' –
@ThomasF謝謝,我不知道,我只是困擾要記住'window.isNaN'是一塊垃圾。 'Number.isNaN'更加實用。 – naomik