js是分块实行的,而且是会先实行定义,所以会先实行function sayHi(){
alert("Hi, Xian!");
}
</script> </body> 然后再实行上面的sayHi();所以没问题。
如果你把上面的函数这样写var sayHi = function (){
alert("Hi, Xian!");
}
然后再sayHi()就会有错了。因为这种不是先定义函数,而是变量付值的形式
alert("Hi, Xian!");
}
</script> </body> 然后再实行上面的sayHi();所以没问题。
如果你把上面的函数这样写var sayHi = function (){
alert("Hi, Xian!");
}
然后再sayHi()就会有错了。因为这种不是先定义函数,而是变量付值的形式
测试代码:
<script>
try {
fnTest();
} catch(e) {
alert("error occurs:" + e.description );
}
</script>
<script>
function fnTest() {
alert("fn1()");
}
</script>
若执行上述代码,则会提示没有对象的错误,因为fnTest()函数定义所在<script>块在使用该函数的<script>块后
但若换成如下代码,则可以执行,原因是由于fnTest()函数定义与其调用在同一脚本块中
<script>
try {
fnTest();
} catch(e) {
alert("error occurs:" + e.description );
}
function fnTest() {
alert("fn1()");
}
</script>