在第10行中,clearTimeout()函数有一个传递timer变量,moveBox它在函数外部被删除,在第20行下面.为什么java脚本会解析timer为变量?它为什么看到它?

JavaScript中的变量声明在该作用域中的任何分步代码之前处理,而在其他函数(以及全局作用域)中声明的函数可以访问在其包含作用域中声明的变量.
所以变量存在是因为事先处理了声明,并且函数可以访问它,因为这是范围在JavaScript中的工作方式.
那么代码中发生的事情按此顺序发生:
变量speed,, moveBox和timer都被声明并给出初始值undefined.
一步一步的代码执行开始
speed 被赋值 10
moveBox =评估右侧的函数表达式,并将结果函数引用赋值给moveBox.
传入的函数表达式被setInterval计算,然后setInterval用它和值调用speed.
返回值setInterval分配给timer
(一段时间后)第一次调用moveBox发生
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |