javascript两种创建函数的方式的不同

javascript常见的两种创建function的方法是:

function testFunc(a){
    alert(a);
}

另外一种

var testFunc=function(a){
    alert(a);
}

对于第一种方式,当为创建全局执行环境而进行变量实例化时,会根据上面的函数声明创建相应的函数对象。

第二种方式,在全局执行环境的变量实例化过程中,会先为全局对象创建一个命名属性。而在计算赋值语句之前,暂时不会创建函数对象,也不会将该函数对象的引用指定给全局对象的命名属性。但是,最终还是会在全局执行环境中创建这个函数对象。

我们来看个例子来理解他们的不同

先看第一个例子:

testFunc('test');
function testFunc(a){
    alert(a);
}

在这种情况下,alert会执行,虽然函数定义在使用这个函数的代码之后,但是由于在创建全局执行环境的时候就会创建这个function,所以执行的时候是有效的,我们接着看这种情况

testFunc('test');
function testFunc(a){
    alert(a);
}

这种情况下,不会alert出’test’如果你有使用firebug等调试工具的话,会报错,提示testFunc不是个function。接着看:说明在执行 testFunc(‘test’)的时候,testFunc这个函数还被有被创建。

var testFunc=function(a){
    alert(a);
}
testFunc('test');

这种情况下,也会alert出’test’ 因为最终这个function还是会被创建,只是创建的时间和第一种函数创建方法不同而已。

此条目发表在 javascript 分类目录,贴了 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>