下記コードの「chechResult関数」の中で使われている「panels[0]」「panels[1]」「panels[2]」は関数宣言後に出てくる配列なので、関数宣言時には定義されておらずエラーが出ると思ったのですが、どうしてエラーが出ないのでしょうか?
もう考えても頭がこんがらがり過ぎて頭がおかしくなってしまいました
どなたか教えて頂けると幸いですm(__)m
javascript
1'use strict'; 2 3{ 4 class Panel { 5 constructor() { 6 const section = document.createElement('section'); 7 section.classList.add('panel'); 8 9 this.img = document.createElement('img'); 10 this.img.src = this.getRandomImage(); 11 12 this.timeoutId = undefined; 13 14 this.stop = document.createElement('div'); 15 this.stop.textContent = 'STOP'; 16 this.stop.classList.add('stop'); 17 this.stop.addEventListener('click', () => { 18 clearTimeout(this.timeoutId); 19 20 panelsLeft--; 21 22 if (panelsLeft === 0) { 23 checkResult(); 24 } 25 }); 26 27 section.appendChild(this.img); 28 section.appendChild(this.stop); 29 30 const main = document.querySelector('main'); 31 main.appendChild(section); 32 } 33 34 getRandomImage() { 35 const images = [ 36 'img/seven.png', 37 'img/bell.png', 38 'img/cherry.png', 39 ]; 40 return images[Math.floor(Math.random() * images.length)]; 41 } 42 43 spin() { 44 this.img.src = this.getRandomImage(); 45 this.timeoutId = setTimeout(() => { 46 this.spin(); 47 }, 50); 48 } 49 } 50 51 function checkResult() { 52 if (panels[0].isUnmatched(panels[1], panels[2])) { 53 panels[0].unmatch(); 54 } 55 if (panels[1].isUnmatched(panels[0], panels[2])) { 56 panels[1].unmatch(); 57 } 58 if (panels[2].isUnmatched(panels[0], panels[1])) { 59 panels[2].unmatch(); 60 } 61 } 62 63 const panels = [ 64 new Panel(), 65 new Panel(), 66 new Panel(), 67 ]; 68 69 let panelsLeft = 3; 70 71 const spin = document.getElementById('spin'); 72 spin.addEventListener('click', () => { 73 panels.forEach(panel => { 74 panel.spin(); 75 }); 76 }); 77}
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/01 07:30
2020/06/01 07:33
2020/06/01 07:49
2020/06/01 07:52
2020/06/01 07:59
2020/06/01 08:00
2020/06/01 08:05