二分之一

Just Jason's Blog

js容易被忽略的基础:函数语句和函数表达式的区别及与AS3的区别

在JS中,定义函数有两种方式,函数语句和函数表达式;

函数语句定义:

function testB(){
    console.log("B");
}

函数表达式定义:

var testA = function(){
    console.log("A");
}

1、作用域提升

在定义位置上,函数语句的方式定义,会将其作用域名提升至顶端,而函数表达式定义不会,必须先定义后执行。看下面的例子:

testB();
testA();
var testA = function(){
    console.log("A");
}
function testB(){
    console.log("B");
}

testA无法执行,因为找不到定义的函数,要想testA执行,必须将它的函数表达式定义放到执行时的前面。

2、this关键词的指向

在JS中,函数语句定义和函数表达式定义,this关键词都会指向其运行时的引用,两者没有区别。 而在AS3中,函数语句定义中的this始终指向当前函数定义的域,而函数表达式定义中的this会随着附加对象的变化而变化,且可以使用call()apply()改变其this的指向。

这一点区别非常重要,特别对于js和as同时使用的前端开发来讲,掌握两者的其础知识,能避免你犯错!

最后修改时间:2014年9月9日星期二晚上6点51