Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我能';“我不明白”;简化JavaScript中的函数是具有词法范围的lambda;_Javascript_Function_Lambda - Fatal编程技术网

我能';“我不明白”;简化JavaScript中的函数是具有词法范围的lambda;

我能';“我不明白”;简化JavaScript中的函数是具有词法范围的lambda;,javascript,function,lambda,Javascript,Function,Lambda,我正在读道格拉斯·克罗克福德的书《JavaScript:好的部分》。我无法理解“简化JavaScript中的函数是具有词法范围的lambda”这句话。这句话想告诉我们什么?你怎么理解这个句子 多谢各位 以下是书中这句话的上下文: 我想包括所有的代码 用于JavaScript中解析 JavaScript。但我的章节只是 30岁或40岁中的一个,所以我感到压抑 在我能看到的页数上 消费另一个并发症是 我的大多数读者都没有 有JavaScript方面的经验,所以我也 必须介绍这种语言 以及它的特点 因

我正在读道格拉斯·克罗克福德的书《JavaScript:好的部分》。我无法理解“简化JavaScript中的函数是具有词法范围的lambda”这句话。这句话想告诉我们什么?你怎么理解这个句子

多谢各位

以下是书中这句话的上下文:

我想包括所有的代码 用于JavaScript中解析 JavaScript。但我的章节只是 30岁或40岁中的一个,所以我感到压抑 在我能看到的页数上 消费另一个并发症是 我的大多数读者都没有 有JavaScript方面的经验,所以我也 必须介绍这种语言 以及它的特点

因此,我决定对语言进行子集划分。 这样,我就不必解析 整个语言,我就不必了 描述整个语言。我打电话 子集简化了JavaScript。 选择子集很容易:它 只包含了我想要的功能 需要编写一个解析器。这是怎么回事 我用优美的代码描述了它:

简化的JavaScript正是好的选择 材料,包括:

用作firortranst类对象

简化JavaScript中的函数是具有词法范围的lambda。

具有原型的动态对象 继承权

对象是无类的。我们可以添加一个 普通法中任何对象的新成员 分配对象可以继承 来自另一个对象的成员

对象文字和数组文字

这是一个非常方便的符号 创建新对象和数组。 JavaScript文本是最重要的 JSON数据的灵感 交换格式


他试图解释JavaScript中函数声明的本质。通过将它们描述为“具有词汇范围的lambdas”,他回避了它们的使用方法。例如,您可以静态声明它们:

function myFunc(arg) {
  // do something
}
可以将它们存储在变量中:

var myFunc = function(arg) {
  // do something
};
可以将它们用作对象属性(方法):

或者,您可以在传递它们时声明它们(在使用jQuery时非常常见):


由于在何时/如何声明它们方面的灵活性,它们与lambda在许多其他语言(例如Python)中所扮演的角色相同。

lambda函数是匿名函数的另一个术语。他说javascript支持匿名函数(您可以动态创建函数而不给它们命名,比如var myVar=function(){…})。词法作用域是指javascript如何处理作用域。见:

var myObject = {
  myMethod: function (arg) {
    // do something
  }
};
$('.myClass').click(function () {
  // do something when an element with class "myClass" is clicked.
});