zoukankan      html  css  js  c++  java
  • JavaScript Allongé 第一呷 :基础函数 (3) 未完

    闭包与域
    是时候来看下一个带函数的函数是如何工作的:
    (function (x) {
    return function (y) {
    return x
    }
    })(1)(2)
    //=> 1

    首先,我们使用我们学过的东西。给出 (某函数)(某参数),我们知道我们将函数应用到参数,创建一个环境,将参数的值绑定到名称,然后对函数表达式求值,所以我们首先用这段代码这样做:
    (function (x) {
    return function (y) {
    return x
    }
    })(1)
    //=> [Function]

    这个环境属于带标识的function (x) ... becomes {x: 1, ...}函数,而应用这个函数的结果是另一个函数值。返回值为函数是有意义的,因为function (x) ...的函数体的表达式是:
    function (y) {
    return x
    }
    所以现在我们有一个代表该函数的值,现在我们打算取该函数的值然后将它应用到参数2,像这样:
    (function (y) {
    return x
    })(2)

    所以我们似乎得到了一个新的环境{y: 2, ...}。在该函数的环境中表达式x将如何被求值呢?在自己的环境中是没有x的,它必须来自其他的地方。

    顺便说一下,这是javascript及其同家庭语言的其中一个伟大的定义特征:

  • 相关阅读:
    求数组中的最小子数组,时间复杂度o(n),java
    第四周进度条
    四则混合运算3
    软件工程作业3
    《构建之法》第三周阅读笔记
    第三周学习进度
    学习进度01
    构建之法阅读笔记01
    构建之法问题
    随机生成题目运算
  • 原文地址:https://www.cnblogs.com/qianlegeqian/p/3678220.html
Copyright © 2011-2022 走看看