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")());

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

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

  • 相关阅读:
    vue axios的使用
    html5 css写出一个实心三角形和空心三角行
    弹出新页面并使整个旧页面背景变暗功能的实现代码
    radio 单选按钮 选中多个
    搭建脚手架cli2.x环境
    页面滚动条位置触发事件
    DataGridView行号发生变化 使用的事件
    eclipse git 忽略文件
    eclipse git 分享项目到GitHub上
    eclipse git 创建新分支 合并分支 删除分支
  • 原文地址:https://www.cnblogs.com/linchen1987/p/3555126.html
Copyright © 2011-2022 走看看