阿里云爆款
首页 » JavaScript » JavaScript查漏补缺--2--函数

JavaScript查漏补缺--2--函数

原文 http://blog.csdn.net/qq_25956141/article/details/79053202

2018-01-14 02:00:05阅读(189)

阿里云爆款
函数

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

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹