2017-10-28 91 views
0

只是想學習JS和寫一些小遊戲的邏輯,但我堅持,因爲contantley得到這個錯誤Uncaught TypeError: roundScore is not a function越來越JS錯誤遺漏的類型錯誤:roundScore不是一個函數

不要知道爲什麼,這是因爲我有有問題的功能:

var playerScore = 0; 
var player = 0; 
var roundScore = 0; 

function rollDice() { 
    var dice; 
    dice = Math.floor((Math.random() * 6) + 1); 
    return dice; 
} 

function playerTurn() { 
    player === 0 ? player = 1 : player = 0; 
} 

function roundScore() { 
    rollDice() !== 1 ? roundScore += rollDice() : (playerTurn(), roundScore = 0); 
    return roundScore; 
} 

document.getElementById('rollDice').addEventListener('click', function() { 
    document.getElementById('round-score-' + player).innerHTML = roundScore(); 
}); 

有人可以看到爲什麼我得到這個錯誤..? thx

回答

4

你有一個函數和一個名爲roundScore的變量。由於JavaScript編譯的方式,你的函數會被掛到文件的頂部,這意味着roundScore是0,而不是函數。所以命名函數或其他變量,你應該沒問題。

+0

:)很好,趕緊感謝你對不起,打擾了愚蠢的錯誤 – John

+0

有一個問題,所以當js編譯函數和變量會被懸掛到文件的頂端,但是它是否起到了懸掛變量上的函數..?而且我猜起升時發生的一切都設置爲'未定義' – John

+0

變量和函數都被提升到其範圍的頂部,但函數總是處於最高位置。如果你google了一些'js hoisting'的變體,這裏有很多關於這個的文章。這裏有一個:https://scotch.io/tutorials/understanding-hoisting-in-javascript – shadymoses

相關問題