函数
在JavaScript中可以直接定义一个函数,也可以用一个变量来接收这个函数
区别,在解释器解释的时候,对于直接定义的函数,会把函数提到前面去,而用变量命名一个函数的时候,只会把变量提升到前面
例如
//会报错,因为这里在解释的时候只会把myFun提到前面去,这时候还没有赋值
myFun();
var myFun = function(){
alert();
}; //注意这里要加分号
//不会报错
myFun();
function myFun(){
alert();
}
自调用函数(function(){}); 第二个括号可以传递一个参数,页面初始化就调用
//如
(function(){
alert();
})(jQuery);
函数解析顺序
1.从上往下提升变量名和函数
2.1完成之后再一条一条执行语句
例如
var a = 1;
test();
function test(){
alert(a);
var a = 2; //如果没有这句,则直接输出2
}
//数据结果为 undefined
//上面再解析完成之后实际上变成了
var a;
function test(){
var a;
alert(a);
a = 2;
}
a = 1;
test();
从上面的例子可以发现,JavaScript解释器解释的时候,是先将变量名和函数提升到上面,然后再开设其他的赋值等,所以最后输出为undefined,如果a,就去上一级找a,找到a的时候一开始也是没有值的,但是在test调用之前被赋值了,所以就变成了1
函数能作为另一个函数的参数,例如例如
console.log(fn(3,function(num){
return num * num;
}));
function fn(a,f){
return a + f(a);
}
//输出结果为12
/****************同样的,你还可以这样************************/
function f1(num1,num2){
return num1 + num2;
}
var f2 = function(num1,num2){
return num1 + num2;
}
var result = function(a,b,f){
return 100 + f(a,b);
};
console.log(result(21,21,f1));
console.log(result(21,21,f2));
//输出结果为
//142
//142