• [译]Javascript中的闭包(closures)


    本文翻译youtube上的up主kudvenkat的javascript tutorial播放单

    源地址在此:

    https://www.youtube.com/watch?v=PMsVM7rjupU&list=PL6n9fhu94yhUA99nOsJkKXBqokT3MBK0b

    本次视频中我们将通过例子来理解Javascript中的闭包(closure)

    什么是闭包(closure)?

    一个闭包就是一个在函数内部的一个函数,而且该函数能够使用其本身的变量和全局变量.内部函数不止能用其外部包裹的函数的变量,同时也可以使用外部函数的参数.一般来说就是通过在一个函数内部中添加一个新的函数来制造闭包的

    Javascript闭包例子

    function addNumbers(firstNumber, secondNumber) 
    {
        var returnValue = "Result is : ";
        // This inner function has access to the outer function's variables & parameters
        function add() 
        {
            return returnValue + (firstNumber + secondNumber);
        }
        return add();
    }
    
    var result = addNumbers(10, 20);
    document.write(result);

    Output : Result is : 30

    以下的代码返回内部函数表达式

    function addNumbers(firstNumber, secondNumber) 
    {
        var returnValue = "Result is : ";
        function add() 
        {
            return returnValue + (firstNumber + secondNumber);
        }
        // We removed the parentheses. This will return the inner function expression without executing it.
       //我们移出了add后面的小阔号,这样就会返回一个内部函数表达式了
      return add; } // addFunc will contain add() function (inner function) expression. // addFunc将包含一个add()函数表达式
    var addFunc = addNumbers(10, 20); // call the addFunc() function and store the return value in result variable
    //呼出addFunc()函数,并且把返回的值存储在result这个变量里
    var result = addFunc(); document.write(result);

    返回并且运行内部函数

    function addNumbers(firstNumber, secondNumber) 
    {
        var returnValue = "Result is : ";
        function add() 
        {
            return returnValue + (firstNumber + secondNumber);
        }
        // We removed the parentheses. This will return the inner function add() expression without executing it.
      //我们删除掉了add后面的小括号,这将返回内部函数add()表达式    

      return add; } // This returns add() function (inner function) definition and executes it. Notice the additonal parentheses. //这一段会返回add()函数的定义并且运行它,注意到(10,20)后面的小括号了吗

    var result = addNumbers(10, 20)(); document.write(result);
  • 相关阅读:
    宇宙纪录片
    IIC总线协议和时序
    使用MATLAB设计FIR滤波器
    rcosfir函数的用法
    ov5640介绍
    FPGA学习之路——PLL的使用
    输入信号与时钟变化一致时,非阻塞方式内部信号变化分析
    使用ChipScope Pro调试硬件
    FPGA烧完程序之后,检测不到网口的
    怎样才能使用ChipScope 加入被优化掉的信号
  • 原文地址:https://www.cnblogs.com/otakuhan/p/7776963.html
Copyright © 2020-2023  润新知