首页 > Web开发 > 详细

初学者对JavaScript匿名函数使用的理解

时间:2014-02-19 18:12:34      阅读:314      评论:0      收藏:0      [点我收藏+]

JavaScript中的函数对于初学者那是相当难理解,比如说我。而它又是相当的强大。使用起来非常灵活和怪异。

函数在js中可以写成两种形式:函数声明和函数表达式。

函数声明和其他语言一样:

function funcName (){
    alert("Hello World");
}

函数表达式的写法是把匿名函数付给一个变量。匿名函数就是function后面不加函数名。

var funcName = function(){
    alert("Hello World");
}

js中函数的怪异和强大之处就在匿名函数。可以把匿名函数当做属性或变量使用。所以会出现很多怪异的写法。来看这个例子:

    var func = function(){
        return function(){
            alert("Hello World");
        };
    };
    func()();

我刚看到函数后面跟两个括号时马上晕了。分开来分析:

首先,有一个匿名函数

function(){
        return function(){
            alert("Hello World");
        };
    }

把它当做对象,赋给func。此时执行func() 相当于执行上面这个匿名函数。

这个匿名函数的返回值又是一个匿名函数。所以执行func()的返回值其实是一个函数

function(){
            alert("Hello World");
        }

所以func()()是执行上面这个函数,屏幕上弹出“Hello World”。

其实,这么写会有助于理解

bubuko.com,布布扣
    var func = function(){
        var newfunc = function(){
            alert("Hello World");
        };
        return newfunc;
    };
    var returnFunc = func();
    returnFunc();
bubuko.com,布布扣

再看一个更变态的

bubuko.com,布布扣
    var func = function(text){
        return function(){
            return text;
        }
    };
    var newFunction = function(text){
        alert(text);
    };
    newFunction(func("hello world")());
bubuko.com,布布扣

能看懂这些变态的代码还是很有意义的。因为在一些框架和模块的使用中经常会碰到变态的代码。

当真正理解“函数是对象”后,就不会觉得这些代码变态了,而会觉得他们很强大。

初学者对JavaScript匿名函数使用的理解

原文:http://www.cnblogs.com/linchen1987/p/3555126.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!