8 Function类型
说起来 ECMAScript 中什么最有意思,我想那莫过于函数了——而有意思的根源,则在于函数实际上是对象。
每个函数都是 Function 类型的实例,与其他引用类型一样具有属性和方法。
定义函数常用的有几种方式?
方法一:定义
function sum (num1, num2) { return num1 + num2; }
方法二:表达式
var sum = function(num1, num2){ return num1 + num2; };
还一种是:
var sum = new Function("num1", "num2", "return num1 + num2"); // 不推荐
方法一和方法二有什么不同呢?
解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。
解析器会率先读取函数声明,并使其在执行任何代码之前可用(可以访问);至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。
比如如下代码能正常运行:
alert(sum(10,10)); function sum(num1, num2){ return num1 + num2; }
而下面代码会出现错误:
alert(sum(10,10)); var sum = function(num1, num2){ return num1 + num2; };