zoukankan      html  css  js  c++  java
  • 初学者对JavaScript匿名函数使用的理解

    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”。

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

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

    再看一个更变态的

        var func = function(text){
            return function(){
                return text;
            }
        };
        var newFunction = function(text){
            alert(text);
        };
        newFunction(func("hello world")());

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

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

  • 相关阅读:
    Nginx Rewrite相关功能-ngx_http_rewrite_module模块指令概述
    Linux操作系统安全-加密和安全扫盲篇
    Nginx安全相关配置-自定义Nginx版本信息
    Nginx高级配置-官网logo之favicon.ico
    Linux操作系统的打包/归档工具介绍
    Nginx高级配置-实现多域名HTTPS
    Nginx高级配置-https功能
    Linux操作系统的压缩、解压缩工具介绍
    Nginx高级配置-压缩功能
    Nginx高级配置-自定义json格式日志
  • 原文地址:https://www.cnblogs.com/linchen1987/p/3555126.html
Copyright © 2011-2022 走看看