函数的理解:
在ECMAScript中函数是对象,每个函数都是Function类型的实例,有属性和方法。
正因为函数是对象,函数名实际上也是一个指向函数对象的指针,且该指针(函数名)不会与某个函数绑定
,因此,“函数是对象,函数名是指针”。
函数的定义方式:
一般函数的定义方式有两种:函数声明与函数表达式。
函数声明:
function sum(num1, num2){
return num1 + num2;
}
var sum = function(num1, num2){
return num1+num2;
}<strong><span style="color:#ff0000;">;</span></strong>
区别:解析器在向执行环境中加载数据时,会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);
函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析执行。
eg:
alert(sum(10,10));
function sum(num1,num2){
return num1 + num2;
}
以上代码可正常运行。因在代码开始执行之前,解析器就已经通过一个名为函数声明提升(function declaraion hoisting)的过程,
读取并将函数声明添加到执行环境中。在代码求值时,js引擎在第一遍会声明函数并将它们放到源代码树的顶部。所以,即使声明
函数的代码在调用它的代码后面,js引擎也能把函数声明提升到顶部。
而下面这样则会报"unexpected identifier"错
alert(sum(10,10));var
sum = function sum(num1, num2){
return num1 + num2;
};
未完待续。。。。。。。。