回答編集履歴
2
情報の追加。
    
        answer	
    CHANGED
    
    | 
         @@ -14,4 +14,5 @@ 
     | 
|
| 
       14 
14 
     | 
    
         
             
            ---
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
            【let - JavaScript | MDN】
         
     | 
| 
       17 
     | 
    
         
            -
            [https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone)
         
     | 
| 
      
 17 
     | 
    
         
            +
            [https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone)
         
     | 
| 
      
 18 
     | 
    
         
            +
            > 変数を宣言より前で参照すると ReferenceError が発生します。
         
     | 
1
情報の追加。
    
        answer	
    CHANGED
    
    | 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            既に回答があるとおり、定義していない変数を使用しているからです。
         
     | 
| 
       2 
     | 
    
         
            -
            ただ、そもそもなぜ同じスコープ内で`const timerId`しているかがわかりません。多重に`setTimeout`をしないためなら、ひとつ上のスコープで`const timerId`する必要があるのでは。(コードは特に読んでいないので何か必要があってのことなのでしょうか)
         
     | 
| 
      
 2 
     | 
    
         
            +
            ただ、そもそもなぜ同じスコープ内で`const timerId`しているかがわかりません。多重に`setTimeout`をしないためなら、ひとつ上のスコープで`const timerId`する必要があるのでは。(コードは特に読んでいないのですが、何か必要があってのことなのでしょうか)
         
     | 
| 
       3 
3 
     | 
    
         
             
            ```js
         
     | 
| 
       4 
4 
     | 
    
         
             
            'use strict';
         
     | 
| 
       5 
5 
     | 
    
         
             
            clearTimeout(timerId);
         
     | 
| 
         @@ -9,4 +9,9 @@ 
     | 
|
| 
       9 
9 
     | 
    
         
             
            /* @Firefox
         
     | 
| 
       10 
10 
     | 
    
         
             
            ReferenceError: can't access lexical declaration `timerId' before initialization _display:38:1
         
     | 
| 
       11 
11 
     | 
    
         
             
            */
         
     | 
| 
       12 
     | 
    
         
            -
            ```**動くサンプル:**[https://jsfiddle.net/dxg3aof9/](https://jsfiddle.net/dxg3aof9/)
         
     | 
| 
      
 12 
     | 
    
         
            +
            ```**動くサンプル:**[https://jsfiddle.net/dxg3aof9/](https://jsfiddle.net/dxg3aof9/)
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            ---
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            【let - JavaScript | MDN】
         
     | 
| 
      
 17 
     | 
    
         
            +
            [https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone)
         
     |