変数のスコープに関して少し混乱しています。以下のコードは playerDetails 関数を正しく実行しません - 関数ブロック内で変数「パネル」を宣言しない限り。
ただし、変数が関数ブロックの外部で宣言されている場合、グローバルスコープがあり、すべての関数ブロックに表示されると思いました。
要するに、最初の行を playerDetails 関数ブロックに移動することで、コードを機能させることができます。なぜそれを行う必要があるのか わかりません。どんな助けでも大歓迎です。
ありがとう。以下のコード;
var panel = document.getElementById ( "panel" ) ;
function init()
{
var player1 = {name: "DJCraigo" , score: 178242 , rank: "1st"} ;
var player2 = {name: "Tohny" , score: 155522 , rank: "2nd"} ;
player1.showDetails = playerDetails ;
player2.showDetails = playerDetails ;
player2.showDetails() ;
player1.showDetails() ;
}
function playerDetails()
{
panel.innerHTML += "Player with name " + this.name + " is ranked " + this.rank + " with a score of " + this.score + "<br>" ;
}
document.addEventListener ( "DOMContentLoaded" , init , false ) ;