Javascript是否比O';关于闭包和匿名函数的Reilly Javascript模式手册?

Javascript是否比O';关于闭包和匿名函数的Reilly Javascript模式手册?,javascript,Javascript,这是O'Reilly Javascript模式书中的一句话: JavaScript也是一种不同寻常的语言。它没有课,而且 函数是用于许多任务的第一类对象。最初 许多开发人员都认为这种语言有缺陷,但更多的是 近年来,这些情绪已经发生了变化。有趣的是,语言 例如Java和PHP开始添加闭包和 匿名函数,JavaScript开发人员一直很喜欢它 而且有一段时间是理所当然的 就这样。我真的不明白Javascript以前是如何被认为是“缺陷”的,而现在不是,因为其他语言如Java或PHP添加了闭包和匿名函

这是O'Reilly Javascript模式书中的一句话:

JavaScript也是一种不同寻常的语言。它没有课,而且 函数是用于许多任务的第一类对象。最初 许多开发人员都认为这种语言有缺陷,但更多的是 近年来,这些情绪已经发生了变化。有趣的是,语言 例如Java和PHP开始添加闭包和 匿名函数,JavaScript开发人员一直很喜欢它 而且有一段时间是理所当然的


就这样。我真的不明白Javascript以前是如何被认为是“缺陷”的,而现在不是,因为其他语言如Java或PHP添加了闭包和匿名函数?它们不只是通用的计算概念吗?它们在其他语言(如Ruby)中不可用吗?所以我真的不知道为什么Javascript现在没有“缺陷”,因为Java和PHP添加了闭包和匿名函数作为它们的特性?为什么会这样?

我认为它所指的是,在过去,许多开发人员将JavaScript视为一种“玩具”语言,只使用它来完成快速的Web UI任务,如验证等,而没有费心去理解该语言的真正工作原理

近年来,JavaScript的“隐藏”特性(如闭包、原型继承等)已经崭露头角,人们现在越来越重视JavaScript作为一种“真正的”语言


所以JavaScript从来没有真正的“缺陷”,但人们可能会认为这是因为他们对该语言的误解。

我个人认为这是一项糟糕的编辑工作

该段应改为(粗体添加是我的,只是关于如何添加的建议) 阅读时):

JavaScript也是一种不同寻常的语言。它没有课,而且 函数是用于许多任务的第一类对象。最初 许多开发人员都认为这种语言有缺陷,但更多的是 近年来,由于更好、更统一的浏览器支持、各种ECMA版本所做的大量工作以及各种JavaScript框架的发展,这些观点已经发生了变化。这一变化的全部或大部分都是软件产品不断向Web移动以及移动应用程序对轻量级语言的需求不断增长的直接结果(这一变化可能有点争议)。

有趣的是,Java和PHP等语言开始添加特性 例如闭包和匿名函数,这是JavaScript开发人员需要的 一段时间以来,我一直在享受和想当然


多年来,JavaScript一直被认为只是一种浏览器语言,因为它的(简单)特性需要比HTML和CSS提供更多的动态性和/或灵活性

几年来,JavaScript逐渐发展成为一种语言和平台,提供了强大的库,这也消除了某些跨浏览器的不兼容性。随着这些库的兴起,社区实际上才开始学习如何使用一些强大的JavaScript概念,如闭包和原型继承

它们以前没有被广泛使用,甚至JavaScript开发人员也不知道,因为JavaScript的基本语言非常简单,大多数开发人员甚至不必像学习Python、C或Java那样学习它——他们所要看的只是教程,其中许多都没有包含这些语言功能

由于受欢迎程度的提高,JavaScript(正式称为ECMAScript)已经收到了几个“版本”,其中的功能已经添加到语言本身中。(仍在开发中)将引入一些全新的功能(包括类、模块系统、迭代器、代数类型等),因此JS将成为更好、更结构化、更易于维护的语言

JavaScript在服务器端(node.js)也越来越流行,并且被证明是一种简单、快速、功能强大的语言,可以(几乎)完成任何类型的工作。节点广泛的“滥用”可能是它最好的特性——JavaScript的异步特性。这并不是什么新鲜事,许多语言都有异步库,但正如Ryan Dahl在他最早的一次关于node的演讲中所说,JS非常适合它。主要是因为它内置了闭包和其他概念


所以最后的答案是,你引用的那本书的作者表达得很差,或者根本就错了。它是一种玩具语言,并不打算像今天这样用于各种各样的用例。但它也在发展,就像Java或PHP一样(别忘了,直到v5之前,PHP还没有明显的OOP支持)。其他语言只是在学习JavaScript被证明对某些用例更有效的优点。总的来说,我的想法是JavaScript从一开始就没有被正确使用,这就是它被称为“缺陷”的情况。现在开发人员有机会探索它的辉煌。

如果说Javascript确实有一些高级功能,我想这是有道理的。。。但是,拥有高级特性并不能帮助解决“缺陷”,只是我们不能仅仅向任何不好的语言添加闭包和匿名函数,并称之为“现在它很好”,它被认为是“缺陷”,因为它不同于主流编程语言,Javascript缺乏某些“特性”那些程序员已经习惯了Javascript所没有的。在过去的十年中,许多事情都发生了变化,Javascript随着web的发展而成熟。与此同时,许多非常优秀的“程序员”开始认真对待web脚本,或者将Javascript作为一种严肃的语言来使用。浏览器成长了,网络变得有利可图,进步也发生了。我仍然知道一些C程序员嘲笑它(还有PHP和Ruby)。谁在乎呢?还有,“被认为有缺陷”!=“实际不足”。许多C结构在浏览器中是完全不必要的