问题:
为什么下面的 JavaScript 示例无法执行?
<code class="javascript">(function() { setTimeout(someFunction1, 10); var someFunction1 = function() { alert('here1'); }; })();</code>
虽然其他类似的示例按预期工作:
<code class="javascript">(function() { setTimeout(someFunction2, 10); function someFunction2() { alert('here2'); } })(); (function() { setTimeout(function() { someFunction3(); }, 10); var someFunction3 = function() { alert('here3'); }; })(); (function() { setTimeout(function() { someFunction4(); }, 10); function someFunction4() { alert('here4'); } })();</code>
解决方案:
问题在于函数声明和函数之间的计算顺序函数表达式。
函数声明与表达式
求值顺序
JavaScript代码经历两个处理阶段:
示例分析
示例 1:
示例 2、3 和 4:
附加说明
以上是为什么在声明变量之前使用分配给变量的函数表达式执行'setTimeout”失败,但使用函数声明执行则成功?的详细内容。更多信息请关注PHP中文网其他相关文章!