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