2016-11-16 67 views
0

我有一個關於其結論,因爲這一個codeschool.com功能鍛鍊的問題...的JavaScript的typeof

function countE() { 
    var phrase = prompt("Which phrase would you like to examine?"); 

    if (typeof(phrase) != "string") { 
    alert("This is not a valid entry!"); 
    return false; 
    } else { 
    var eCount = 0; 

    for (var i = 0; i < phrase.length; i++) { 
     if (phrase.charAt(i) === 'e' || phrase.charAt(i) === 'E') { 
     eCount++; 
     } 
    } 
    alert(eCount); 
    return true; 
    } 
} 
countE() 

所以..我想考的是不是一個字符串,我希望得到警報「這不是有效的條目!「。

但是,如果一個提示只返回一個字符串,那麼爲什麼這個 < <如果(typeof(phrase)!=「string」)>>包含在函數中?

對不起,在這裏提出這個基本問題,codeschool討論頁沒有給我一個答案,我很想知道。

謝謝。 J

+3

嘗試按該提示中止。認爲只是檢查它是否爲空會更簡單。 PS:typeof不需要() – GottZ

+3

@Tushar不會不會 – PeeHaa

+1

這個問題告訴我們寫評論有多重要。 –

回答

0

衝壓CancelEsc將返回null。這是你應該感興趣的檢查

cancel

preview

參考:MDN prompt

注意:您不需要使用()typeof。因此,將其更改爲:

if (typeof phrase != "string") { 

其他場景

當你期望一個數字,如年齡什麼的,你可以使用:

if (isNaN(phrase)) { 

以上可能幫助你決定它是否是一個數字。

+1

如果downvoter回來並檢查答案,我會很高興。對不起,我犯了第一個錯誤。 –

+0

我還是不明白。有人請告訴我爲什麼這個函數可能是寫成類型的。這是錯的嗎?如果是的話應該如何寫?如果不是,我怎麼能得到'這不是一個有效的條目'來提醒?對我來說,按Esc或取消只是警報「這個短語是0E!」 – James

+0

@詹姆斯你可以顯示你的代碼嗎?它肯定返回null,而null是一個對象而不是字符串。 –