猿问

“未定义”变量变成数字的 JavaScript 行为真的很奇怪吗?

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


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


<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>


HUWWW
浏览 109回答 1
1回答

不负相思意

由于这一行,您得到了一个数字:aaa = setTimeout(...)setTimeout 返回一个数字。请参阅文档:https ://www.w3schools.com/jsref/met_win_settimeout.asp
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答