方法在代码执行时创建。
如果代码的语义是正确的解释器能够执行代码。 虽然没有解析没有执行。 解析后的文件是在解析下一个文件之前逐个执行的。
看看这个: 我们有两个js文件。
<script src ='1.js'></script>
<script src ='2.js'></script>
在第二个文件中,我们把setTimeout的声明;
//file2
window.setTimeout = function(){};
在第一个文件,我们会为setTimeout的检查被覆盖
//file1
var f = function() { alert(setTimeout); };
f();// alerts native setTimeout
setTimeout(f, 1000); // We use native settimeout, propably after one second file2 being loaded and executed and function `f` will be alerts the overriden setTimeout
如果是将分析过程中创建其中我添加的方法。这可以在创建它的脚本的任何地方访问它,甚至可以在声明之前进行访问。 这样:
//somefile.js
setTimeout(); // we do not have access to function declared below, so while parsing this wasn't created.
window.setTimeout = function() { alert('whatever'); }
是的,但这并没有回答我问的问题,这是关于javascript方法的解析和映射的问题 – 2011-12-23 05:29:46
请看我的更新回答 – techfoobar 2011-12-23 05:46:37
如果你说的是真的,那么我不应该体验到我所看到的行为,即在新的setTimeout方法调用默认方法之前解析的代码,因为它在解析setTimeout方法替换后运行,有什么想法? – 2011-12-23 09:17:58