1、使用函数声明语法定义
而用函数表达式定义的函数,解析器会自上而下解释代码,将其看错是初始化变量,alert时就相当于调用了一个不存在的sum函数,导致出错。
function sum(num1,num2)
{
return num1 + num2;
}
2、使用函数表达式定义
var sum = function(num1,num2)
{
return num1 + num2;
}
看起来这两种定义方式并没有太大的不同,但是在实际运行过程中,解析器读取它们的顺序是不一样的。
alert(sum(10,10)); //得到20
function sum(num1,num2)
{
return num1 + num2;
}
alert(sum(10,10)); //报错,下面的代码也得不到执行
var sum = function(num1,num2)
{
return num1 + num2;
}
其实解析器在解释javascript代码的时候会首先读取函数声明,使其在执行任何代码之前可以得到访问;
而用函数表达式定义的函数,解析器会自上而下解释代码,将其看错是初始化变量,alert时就相当于调用了一个不存在的sum函数,导致出错。