相信学过c语言的同学从老师那听得最多的一句话那便是“先定义,后使用(这里说的是 变量啦)”,那么在javascript中函数申明与函数表达式有什么区别呢?
请看下面的代码
//函数申明
alert(test(100));
function test(num)
{
return num+100;
}
这段代码没有什么问题,可以运行。
接着看下面一段代码
//函数表达式
alert(test(100));
var test=funtion(num)
{
return num+100;
}
这段代码便会出问题,我们来看看为什么,在javascript中,对于以申明方式写的函数,在函数执行前javascript解析引擎便已经将函数名指向函数体并加入代码树中了,而对于函数表达式来说则只有等到执行到他的时候才会将函数指针赋给复制表达式前的变量,也就是在这之前对它调用是会出问题的,类似于空指针。