JS函数定义与调用问题

书上说如果在函数定义之前调用函数,执行会出错,可是我自己打代码并没有出错,这是为什么??图片说明

这种说法是不对的,那要看你定义函数的方式而定
1、function a(){}
以这种方式定义函数无论定义在调用前后都不会出错。
2. var a=function(){}
以这种方式定义的函数就如书中所说的必须定义在调用前,否则会出错。
会出现这两种不同结果的原因是函数的声明提前导致的。
另外提一点,看你的书上的说法,感觉你的书已经比较老了,有些说法已经过时了,现在不适用了。建议换些最近出版的外文翻译版来看看,这方面来说外国人的观点还是更有说服力的。

我觉得你理解错了。调用的前后和你定义函数的位置前后没有关系。页面一进来首先会加载js脚本,但不会调用。当你触发相应事件才会调用相应方法
比如:
点击
<br> function clickMe(){<br> alert(&quot;hello&quot;);<br> }<br> <script><br> 这样不会报错,因为你只有点击按钮时才去找这个方法。是在页面加载以后的操作。而页面加载完后,这个方法已经定义了。</p>

如果是 函数声明的方式 定义函数,则可以在函数定义前调用函数。(具体可以了解一下 JS的Lexical Environment)