页面加载过程中,浏览器会对页面上或载入的每个js代码块(或文件)进行扫描,
如果遇到定义式函数,则进行预处理(类似于C等的编译),
处理完成之后再开始 由上至下执行脚本中的内容
在现在,有一些先进的浏览器确实可以先调自定义用函数,自定义函数写在下面,因为这些先进浏览器遇到函数时,会自动去寻找是否有这个函数,但是,还是不建议这样写,毕竟一些低版本的浏览器不支持,特别是IE,
js 在执行代码前会对 变量、函数 进行 <预编译处理>
具体可以看下 javascript的运行机制
为什么会报错呢?fn(a) 的作用域是整个 页面 只要有这个函数 在作用域中的任何地方 都可以调用
用到的时候再去找
找不到再报错