'undefined' 变量的 JavaScript 变成数字真的很奇怪吗?

Really weird behavior of JavaScript of 'undefined' variable becoming a number?

所以...我最初试图创建自己的去抖动功能,但现在让我们把它放在一边,因为我有一个全新的问题(我认为)。

下面的代码将呈现随机数,我不明白为什么。有人可以解释一下这里发生了什么吗?

<body>

<button id='butto'>Click</button>

<script>
let buttonz = document.querySelector('#butto');

buttonz.addEventListener('click',function(){
    let aaa;
    console.log(aaa);             //outputs 'undefined' - expected
    
    if (aaa){
        clearTimeout(aaa);
        console.log(aaa);
    }
    
    aaa = setTimeout(()=>{
        console.log('clicked');
        aaa = undefined;
        console.log(aaa);          //outputs 'undefined' - expected
    }, 2000);
    
    console.log(aaa);              // outputs 'random number' - ????????????????
    console.log(typeof aaa);       // outputs 'Number' - ????????????????
});

</script>
</body>

你得到一个号码是因为这条线:

aaa = setTimeout(...)

setTimeout returns一个数字。请参阅文档:https://www.w3schools.com/jsref/met_win_settimeout.asp